万无一失 Python 计算器
Foolproofing a Python calculator
我正在编写一个可以处理两个不同数字的基本计算器。
到目前为止,我设法编写了一个可用的原型,但是在对其进行划分和万无一失的过程中,我 运行 遇到了很多问题,所以我发布了它们
分别地。
我希望程序在用户未提供符合条件的接线员时重复问题。这就是我现在的代码:
def optn_query():
print("Hulk can different things with number!")
print("YOU!")
optn = input("What Hulk do with number?! ")
return optn
我是否使用 if 语句来确定输入是否正确?
我还把 return optn 放在那里,所以下一个函数(优雅地称为 hulk_math)不会中途失败,但它仍然会:
Traceback (most recent call last):
File "hulc.py", line 57, in <module>
main()
File "hulc.py", line 13, in main
hulk_math()
File "hulc.py", line 41, in hulk_math
if optn == "+":
NameError: name 'optn' is not defined
我应该怎么做才能解决这个问题?
这是 hulk_math() 本身:
def hulk_math():
if optn == "+":
result = num1 + num2
print("Hulk ADDS!!! Hulk thinks it's {0}!".format(result))
elif optn == "-":
result = num1 - num2
print("Hulk SUBTRACTS!!! Hulk thinks it's {0}!".format(result))
elif optn == "*":
result = num1 * num2
print("Hulk MULTIPLIES!!! Hulk thinks it's {0}!".format(result))
elif optn == "/":
result = num1 / num2
print("Hulk DIVIDES!!! Hulk thinks it's {0}!".format(result))
main()
您需要实际调用您的函数:
def hulk_math():
optn = optn_query()
#The rest of your code
此外,除非 num1
和 num2
在您的代码中的其他地方定义,以便它们在 hulk_math
的范围内,否则您的程序也会在那里失败。
使用 global
不是执行此操作的正确方法。通过保存 return 值并将它们作为参数传递,将值从一个函数传递到另一个函数。
def main():
intro()
num1 = num1_query()
optn = optn_query()
num2 = num2_query()
hulk_math(num1, optn, num2)
def hulk_math(num1, optn, num2):
#Your original code will work as expected
我正在编写一个可以处理两个不同数字的基本计算器。 到目前为止,我设法编写了一个可用的原型,但是在对其进行划分和万无一失的过程中,我 运行 遇到了很多问题,所以我发布了它们 分别地。
我希望程序在用户未提供符合条件的接线员时重复问题。这就是我现在的代码:
def optn_query():
print("Hulk can different things with number!")
print("YOU!")
optn = input("What Hulk do with number?! ")
return optn
我是否使用 if 语句来确定输入是否正确?
我还把 return optn 放在那里,所以下一个函数(优雅地称为 hulk_math)不会中途失败,但它仍然会:
Traceback (most recent call last):
File "hulc.py", line 57, in <module>
main()
File "hulc.py", line 13, in main
hulk_math()
File "hulc.py", line 41, in hulk_math
if optn == "+":
NameError: name 'optn' is not defined
我应该怎么做才能解决这个问题?
这是 hulk_math() 本身:
def hulk_math():
if optn == "+":
result = num1 + num2
print("Hulk ADDS!!! Hulk thinks it's {0}!".format(result))
elif optn == "-":
result = num1 - num2
print("Hulk SUBTRACTS!!! Hulk thinks it's {0}!".format(result))
elif optn == "*":
result = num1 * num2
print("Hulk MULTIPLIES!!! Hulk thinks it's {0}!".format(result))
elif optn == "/":
result = num1 / num2
print("Hulk DIVIDES!!! Hulk thinks it's {0}!".format(result))
main()
您需要实际调用您的函数:
def hulk_math():
optn = optn_query()
#The rest of your code
此外,除非 num1
和 num2
在您的代码中的其他地方定义,以便它们在 hulk_math
的范围内,否则您的程序也会在那里失败。
使用 global
不是执行此操作的正确方法。通过保存 return 值并将它们作为参数传递,将值从一个函数传递到另一个函数。
def main():
intro()
num1 = num1_query()
optn = optn_query()
num2 = num2_query()
hulk_math(num1, optn, num2)
def hulk_math(num1, optn, num2):
#Your original code will work as expected