Gå til innhold

Anbefalte innlegg

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 av eskuge
Lenke til kommentar
Videoannonse
Annonse

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 av FraXinuS
Lenke til kommentar

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
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
  • 2 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...