_Marvin_ Skrevet 21. juni 2007 Del Skrevet 21. juni 2007 (endret) Hei Sitter å små fikler med og lære meg python. Kommer over en kode som beregner areal av diverse figurer. Så tenkte jeg det kunne være show om jeg fikk til å legge til utregning av volum også. Så jeg laget en ny meny som gir brukeren valget mellom areal og volum utregning pluss en volum meny. Tastet inn koden for volum utregning og programmet kjørte fint bortsett fra en ting. Når jeg velger f.eks volum og kjører utregning av en figur så vil jeg at den skal hoppe tilbake menyen som gir valget om volum eller areal utregning. Det gjør den ikke. Den printer menyen men valgene er fortsatt låst til volummenyen. Så det jeg lurer på er hvordan jeg kan hoppe ut av loopen som jeg er i og tilbake til hovedmenyen. Håper jeg fikk forklart problemet nogenlunde forståelig. Koden: Klikk for å se/fjerne innholdet nedenfor goMeny = """ Pick area or volum(1-2) 1) Area 2) Volume """ menu = """ Pick a shape(1-4): 1) Square 2) Rectangle 3) Triangle 4) Circle 5) Quit """ volMeny = """ Pick a shape(1-4) 1) Cube 2) Prism 3) Pyramid 4) Sphere 5) Quit """ meny = int(raw_input(goMeny)) if meny == 1: shape = int(raw_input(menu)) while shape != 5: if shape == 1: length = float(raw_input("Length: ")) print "Area of square = ", length ** 2 elif shape == 2: length = float(raw_input("Length: ")) width = float(raw_input("Width: ")) print "Area of rectangle = ", length * width elif shape == 3: length = float(raw_input("Length: ")) width = float(raw_input("Width: ")) print "Area of triangle = ", length * width / 2 elif shape == 4: radius = float(raw_input("Radius: ")) print "Area of Circle = ", (radius**2) * 3.14 else: print "Not a valid shape, try again" shape = int(raw_input(goMeny)) if meny == 2: volume = int(raw_input(volMeny)) while volume != 5: if volume == 1: side = float(raw_input("Side: ")) print "Volume of Cube = ", side**3 elif volume == 2: lenght = float(raw_input("Lenght: ")) width = float(raw_input("Width: ")) height = float(raw_input("Height: ")) print "Volume of Prism = ", lenght * width * height elif volume == 3: lenght = float(raw_input("Length: ")) width = float(raw_input("Width: ")) height = float(raw_input("Height: ")) print "Volume of Pyramid = ", (lenght * width * height) / 3 elif volume == 4: radius = float(raw_input("Radius: ")) print "Volume of Sphere = ", ((radius**3) * 3.14 * 4) / 3 else: print "Not a valid shape, try again" volume = int(raw_input(goMeny)) PS. Beklager mixing av engelsk og norsk i koden. Endret 21. juni 2007 av eskuge Lenke til kommentar
Xecuter Skrevet 22. juni 2007 Del Skrevet 22. juni 2007 Ett tips: I stedet for å skrive int(raw_input(goMeny)) osv., så bruk heller input(goMeny) input() er for tall. Lenke til kommentar
FraXinuS Skrevet 22. juni 2007 Del Skrevet 22. juni 2007 (endret) Det er ikke særlig smart å bruke input(). Prøv f.eks å skrive __import__('os').system('SHUTDOWN -r -t 01'), hvis du bruker windows og se hva som skjer. Man kan skrive mye verre ting en det også. For å komme tilbake til den første menyen må du bruke en ekstra loop som inneholder de to andre loopene. Da vil du kunne skrive 5 for å komme tilbake til goMeny. Endret 22. juni 2007 av FraXinuS Lenke til kommentar
Xecuter Skrevet 22. juni 2007 Del Skrevet 22. juni 2007 Det er ikke særlig smart å bruke input(). Prøv f.eks å skrive __import__('os').system('SHUTDOWN -r -t 01'), hvis du bruker windows og se hva som skjer. Man kan skrive mye verre ting en det også. 8921517[/snapback] What?? Lenke til kommentar
dabear Skrevet 22. juni 2007 Del Skrevet 22. juni 2007 Det han forsøkte å si, er om du limer inn den linja der, kan du vha input() restarte maskina eller utføre andre ting på systemet, med raw_input kan du ikke gjøre det samme Lenke til kommentar
FraXinuS Skrevet 23. juni 2007 Del Skrevet 23. juni 2007 Hvis du f.eks har dette programmet: _hemmeligpassord_ = 'fwI=+?3.,"kje@5' while True: p = input('Skriv inn passordet: ') if p == _hemmeligpassord_: break else: print "Feil passord" print "Du er logget inn" Da kan jeg komme meg inn ved å skrive f.eks: >>>Skriv inn passordet: 12345678 Feil passord >>>Skriv inn passordet: "Njwndoi98f" Feil passord >>>Skriv inn passordet: __import__("sys").stdout.write(str(dir())) ['__builtins__', '__doc__', '__file__', '__name__', '_hemmeligpassord_', 'p']Feil passord >>>Skriv inn passordet: _hemmeligpassord_ Du er logget inn eller >>>Skriv inn passordet: eval(dir()[0]) Feil passord >>>Skriv inn passordet: eval(dir()[1]) Feil passord >>>Skriv inn passordet: eval(dir()[2]) Feil passord >>>Skriv inn passordet: eval(dir()[3]) Feil passord >>>Skriv inn passordet: eval(dir()[4]) Du er logget inn Så om du ikke kan stole på det som blir skrevet inn bør du ikke bruke input(). Med raw_input() hadde ikke det over funket. Lenke til kommentar
_Marvin_ Skrevet 23. juni 2007 Forfatter Del Skrevet 23. juni 2007 Det er ikke særlig smart å bruke input(). Prøv f.eks å skrive __import__('os').system('SHUTDOWN -r -t 01'), hvis du bruker windows og se hva som skjer. Man kan skrive mye verre ting en det også. For å komme tilbake til den første menyen må du bruke en ekstra loop som inneholder de to andre loopene. Da vil du kunne skrive 5 for å komme tilbake til goMeny. 8921517[/snapback] Takk. Skal prøve å sette inn en ny loop. Lenke til kommentar
DaYlighT Skrevet 4. juli 2007 Del Skrevet 4. juli 2007 Men det viktigste av alt er jo da selvfølgelig å huske at 2 ganger 3 er 6 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å