Pyls Skrevet 26. oktober 2010 Del Skrevet 26. oktober 2010 (endret) Hei, Driver og tester ut python etter å ha prøvd programmering i java for noen dager siden. Leste her på forumet bla. at python virket som et bedre nybegynner-språk. Til saken; Jeg har prøvd å lage en veldig enkel kalkulator med to regneoprasjoner (addisjon og subtraksjon) for å bli kjent med python, men har møtt på et problem. Kopierer inn programmet her; import time print "Kalkulator versjon 1." time.sleep(2) print ("Vil du addere eller subtrahere?") print ("Skriv add for aa addere, og sub for aa subtrahere.") metode = raw_input("add eller sub?") if metode == add: fnum = input ("Skriv ditt foorste nummer : ") snum = input ("Skriv ditt andre nummer : ") print ("Vennligst vent...") time.sleep(1) print "." time.sleep(1) print "." answer = fnum + snum print answer time.sleep(3) if metode == sub: fnum2 = input ("Skriv ditt foorste nummer : ") snum2 = input ("Skriv ditt andre nummer : ") print ("Vennligst vent") time.sleep(1) print "." time.sleep(1) print "." answer2 = fnum2 - snum2 print answer2 time.sleep(3) else: print ("Proov på nytt") Problemet: Det oppstår en feil når brukeren skal taste inn valget mellom addisjon og subtraksjon, og jeg lurer på hvordan man skal skrive denne funksjonen skikkelig? Altså; Brukeren skriver f.eks "add" i kommandolinjen, og dermed går datamaskinen til "if metode == add". Jeg prøvde å erstatte dette med input () istedenfor, og bruke tall (1 eller 2) for å bestemme regneoprasjon, men lurer altså på; Hva skal man altså skrive her for og kunne bruke tekst? Og enda en ting til: Er det en syntaks jeg kan bruke for at ikke kommandolinje-boksen skal lukke seg umiddelbart etter at svaret er avgitt? (Bortsett frå time.sleep) Om dere legger merke til uvaner i koden min er jeg glad for at dere gjør meg oppmerksom på det (Jeg brukte time.sleep og ".", "vennligst vent" osv. for at det skulle se litt gammelt ut ) Mvh. Pyls Endret 26. oktober 2010 av Pyls Lenke til kommentar
snippsat Skrevet 26. oktober 2010 Del Skrevet 26. oktober 2010 (endret) Tjaa du har nok litt mer lesing og gjøre Skrive alt på engelsk er en god vane og venne seg til når du programmerer. time dropp den nå,har ikke mye for i denne koden >>> metode = raw_input("add eller sub?") add eller sub?add >>> type(metode) <type 'str'> >>> if metode == add: fnum = input ("Skriv ditt foorste nummer : ") Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> if metode == add: NameError: name 'add' is not defined >>> #So this dont work add need to be defind or be a string('add') >>> #raw_input return a string then you need to compare against string >>> if metode == 'add': fnum = input ("Skriv ditt foorste nummer : ") Skriv ditt foorste nummer : 5 >>> Du kan se litt på float,les litt om datatyper i python. Skriv ditt foorste nummer : 3.5 >>> fnum1 = float(raw_input("Skriv ditt foorste nummer : ")) Skriv ditt foorste nummer : 6.45 >>> fnum + fnum1 9.95 >>> #float so you can add decimal numbers else: print ("Proov på nytt") Vil aldrig skje for her slutter det. Loop,lage funksjoner kan være stikkord går ikke så mye mere inn på det nå. Kan vise en funksjon def add_number(): fnum = float(raw_input("Skriv ditt foorste nummer : ")) fnum1 = float(raw_input("Skriv ditt foorste nummer : ")) my_sum = fnum + fnum1 print my_sum #Or "return my_sum" then you can mix many function together add_number() Python har mange stryker,avslutter med noe du kan lure litt på. >>> sum([float(raw_input('Enter number to add: ')) for i in range(2)]) Enter number to add: 5.5 Enter number to add: 3.75 9.25 >>> #eval can be fun,but can be unsafe to use. >>> eval('2+4**5') 1026 >>> eval('3.5/5+4**5') 1024.7 >>> Endret 26. oktober 2010 av SNIPPSAT Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå