[Tutor] When I run this code, it just keeps repeating.

python-tutor@toddmaynard.com python-tutor at toddmaynard.com
Sun Jul 31 04:10:33 CEST 2005


Looks like you are making some pretty good progress.

The short answer to your question is that the menu & user input need to be 
inside the while loop.  That way cal_opt has a chance to change value before 
it gets evaluated by the while loop again.

Another comment - the global cal_opt is considered evil by many.  Better would 
be:

def cal():
   return  int(raw_input("Option: "))

print "Mini Calculator"
print "By Nathan Pinno"
print

while cal_opt != 9:
   menu()  
   cal_opt=cal()

   if cal_opt == 1:
         X = input("First number:" )
         Y = input("Second number:" )
         print X, "+", Y, "= ",X + Y

   ....


Keep hacking away at it...  you're making good progress.

--Todd


On Saturday 30 July 2005 09:55 pm, Nathan Pinno wrote:
> When I run the following code it just keeps repeating. Here is a screen
> shot showing what I mean: Mini Calculator
> By Nathan Pinno
>
> CALCULATE MENU
> 1) Add
> 2) Subraction
> 3) Multiplication
> 4) Division w/o remainder
> 5) Division with remaider
> 6) Exponation
> 7) Square roots
> 9) Exit
> Option: 5
> First number:4
> Second number:2
> 4 / 2 =  2  R  0
> First number:3
> Second number:6
> 3 / 6 =  0  R  3
> First number:5
> Second number:6
> 5 / 6 =  0  R  5
> First number:
>
> Here is the relevant code:
> # This is a small calculator.
> def menu():
>     print "CALCULATE MENU"
>     print "1) Add"
>     print "2) Subraction"
>     print "3) Multiplication"
>     print "4) Division w/o remainder"
>     print "5) Division with remaider"
>     print "6) Exponation"
>     print "7) Square roots"
>     print "9) Exit"
>
> def cal():
>     global cal_opt
>     cal_opt = int(raw_input("Option: "))
>
> print "Mini Calculator"
> print "By Nathan Pinno"
> print
> menu()
> cal()
> while cal_opt != 9:
>     if cal_opt == 1:
>         X = input("First number:" )
>         Y = input("Second number:" )
>         print X, "+", Y, "= ",X + Y
>     elif cal_opt == 2:
>         X = input("First number:" )
>         Y = input("Second number:" )
>         print X, "-", Y, "= ",X - Y
>     elif cal_opt == 3:
>         X = input("First number:" )
>         Y = input("Second number:" )
>         print X, "*", Y, "= ",X * Y
>     elif cal_opt == 4:
>         X = input("First number:" )
>         Y = input("Second number:" )
>         if Y == 0:
>             print "Division by zero ot allowed!"
>             Y = input("Second number:" )
>         else:
>             print X, "/", Y, "= ",X / Y
>     elif cal_opt == 5:
>         X = input("First number:" )
>         Y = input("Second number:" )
>         if Y == 0:
>             print "Division by zero ot allowed!"
>             Y = input("Second number:" )
>         else:
>             print X, "/", Y, "= ",X / Y," R ", X % Y
>     elif cal_opt == 6:
>         X = input("First number:" )
>         Y = input("Power:" )
>         print X, "**", Y, "= ",X**Y
>     elif cal_opt == 7:
>         X = input("Number to find the square root of:" )
>         print "The square root of", X, " = ",X**0.5
>     else:
>         print "That's not an option. Try again."
>         menu()
>         cal()
> print "Goodbye"
>
> How do I stop this, and make it go back to the main menu?
>
> Thanks in advance,
> Nathan


More information about the Tutor mailing list