Kirjautuminen

Haku

Tehtävät

Kilpailu

Murra koodi!
Lue ja osallistu!
Voittajia 1 + yrittäjiä 1

Keskustelu: Koodit: Python: CSV Verranto

koodaaja [05.03.2022 09:30:37]

#

Tämä ohjelma laskee suoraan verrannolisia yhtälöitä, joissa oikea puoli voi olla myös neliöön tai kuutioon korotettuna. Lisäksi ohjelma tallentaa tiedon taulukkolaskentaohjelmaan ja korvaa aina vanhat tiedot. CSV:ssä eri asiat on erotettu pilkuilla ja riivnvaidoilla.

import csv
import math

#Annetaan lähtötiedot, kuten verrannon tyyppi ja luvut.
ensimmainen, toinen, kolmas = input("Syötä mitkä verrannot lasketaan").split()

aste = [int(ensimmainen),int(toinen),int(kolmas)]
print(aste)

osoittaja_vasen, nimittaja_vasen = input("Syötä vasemman puolen osoittaja ja nimittäjä").split()

osoittaja_oikea, nimittaja_oikea = input("Syötä oikean puolen osoittaja ja nimittäjä").split()

luvut = [float(osoittaja_vasen),float(nimittaja_vasen),float(osoittaja_oikea),float(nimittaja_oikea)]

tulokset = []
vaihtoehto = 0
#Katsotaan, mikä luvuista on tuntematon.
if (luvut[0] == 0 and luvut[1] != 0 and luvut[2] != 0 and luvut[3] != 0):
 vaihtoehto = 1
elif (luvut[1] == 0 and luvut[0] != 0 and luvut[2] != 0 and luvut[3] != 0):
 vaihtoehto = 2
elif (luvut[2] == 0 and luvut[0] != 0 and luvut[1] != 0 and luvut[3] != 0):
 vaihtoehto = 3
elif (luvut[3] == 0 and luvut[0] != 0 and luvut[1] != 0 and luvut[2] != 0):
 vaihtoehto = 4


#Tallennetaan taulukkolasketan ohjelmaan.



with open("verranto.csv","w") as tiedosto:
  kirjoittaja = csv.writer(tiedosto)
  #Lasketaan verrannon asteet
  #Oikea puoli on neliöön tai kuutioon verrannollinen.
  for i in range(len(aste)):
    if (aste[i] == 1):

      if (vaihtoehto == 1):
        luvut[0] = ((luvut[1]*luvut[2]**(i+1))/luvut[3]**(i+1))

      elif (vaihtoehto == 2):
         luvut[1] = ((luvut[0]*luvut[3]**(i+1))/luvut[2]**(i+1))
      elif (vaihtoehto == 3):
         luvut[2] = ((luvut[0]*luvut[3]**(i+1))/luvut[1])**(1.0/(i+1))

      elif (vaihtoehto == 4):
         luvut[3] = ((luvut[1]*luvut[2]**(i+1))/luvut[0])**(1.0/(i+1))
      #Pyöristetään luvut kahden desimaalin tarkkuudella.
      luvut[0] = round(luvut[0]*100)/100.0
      luvut[1] = round(luvut[1]*100)/100.0
      luvut[2] = round(luvut[2]*100)/100.0
      luvut[3] = round(luvut[3]*100)/100.0

      #Laitetaan tulokset taulukkolasketan ohjelmana.
      tulokset = [[luvut[0],luvut[2]],[luvut[1],luvut[3]]]
      kirjoittaja.writerow(["Vasen",f"Oikea {i+1}"])
      kirjoittaja.writerows(tulokset)
      kirjoittaja.writerow("\n")

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta