我有一个创建基本计算器程序的任务,该程序具有加法,减法,乘法和除法作为选择。主菜单应调用菜单,菜单应显示选项,显示答案后,程序应返回菜单。
当我运行它时,菜单显示正确并提示我选择数学运算,但是当我输入一个值(即使它是一个无效的数字)时,程序什么都不做,然后返回菜单。
def add(num1,num2):
num1, num2 = prompt()
return num1 + num2
def subtract(num1,num2):
num1, num2 = prompt()
return num1 - num2
def multiply(num1,num2):
num1, num2 = prompt()
return num1 * num2
def divide(num1,num2):
num1, num2 = prompt()
if num1 == 0 and num2 == 0:
print "Dividing zero by zero is undefined."
if num1 != 0 and num2 == 0:
print "Cannot divide by zero."
return float(num1) / num2
def prompt():
num1 = raw_input("Please enter the first value: ")
num2 = raw_input("Please enter the second value: ")
return (num1,num2)
def menu():
print "Basic Calculator"
print "1 - Add"
print "2 - Subtract"
print "3 - Multiply"
print "4 - Divide"
print "5 - Quit"
operation = int(raw_input("Please enter a value to choose from options above: "))
return operation
def main():
while True:
if menu() == 1:
answer = add(num1,num2)
print answer
elif menu() == 2:
answer = subtract(num1,num2)
print answer
elif menu() == 3:
answer == multiply(num1,num2)
print answer
elif menu() == 4:
answer == divide(num1,num2)
print answer
elif menu() == 5:
print "Thank you for using basic calculator"
print "Goodbye!"
break
else:
print "Invalid input"
if __name__=='__main__':
main()
如何调用加法,减法,乘法和除法函数的主函数,然后如果选择选项5退出则中断?
我补充说我是python的新手。感谢您提供任何帮助!
答案 0 :(得分:3)
你的错误是主要的,改为:
def main():
while True:
operation = menu()
if operation == 1:
answer = add(num1,num2)
print answer
elif operation == 2:
answer = subtract(num1,num2)
print answer
# And so on
因为您在每个IF上调用了menu(),所以每个输入只检查一个IF。
修改强>
删除您对函数的所有输入:def add(num1,num2)
应为def add():
,因为它们会返回值,但不会取值。
答案 1 :(得分:1)
我无法重现您描述的行为。但是你的代码不起作用,因为像这样的行
answer = add(num1,num2)
抛出错误:
$ python2 so.py
Basic Calculator
1 - Add
2 - Subtract
3 - Multiply
4 - Divide
5 - Quit
Please enter a value to choose from options above: 1
Traceback (most recent call last):
File "so.py", line 58, in <module>
main()
File "so.py", line 39, in main
answer = add(num1,num2)
NameError: global name 'num1' is not defined
您认为num1
和num2
来自何处?
答案 2 :(得分:1)
您调用的函数包含尚不存在的参数:add(num1, num2).
在下面的代码段中,num1
和num2
尚未定义,因为它们是由函数{{初始化的1}},由其他函数(prompt()
,add()
等)调用。
subtract()
首先初始化def main():
while True:
if menu() == 1:
answer = add(num1,num2)
print answer
和num1
,然后在后续调用中将它们用作参数。在其他函数中删除对prompt()的调用。在函数调用中使用它们之前先调用num2
的行:
prompt()
基本上,稍微修改一下你的想法。传递给函数调用的参数(在您的情况def add(num1,num2):
return num1 + num2
...
def main():
while True:
if menu() == 1:
num1, num2 = prompt()
answer = add(num1,num2)
print answer
和num1
中传递到num2
)应该已经初始化。也就是说,add(num1, num2)
和num1
在将它们传递到另一个函数之前应该已经有值,比如num2
此外,add(num1, num2).
返回一个字符串,因此您必须先将它们转换为数值,然后才能进行数学运算。
答案 3 :(得分:1)
print("Simple maths count")
num1 = int(input("What is your number?"))
for i in range (1, 20):
print (num1 * i)