python - 即使提供了正确的输入,def 函数也不会返回任何输出
问题描述
我是编程新手,使用 Python 3.9。所以,我正在根据我对阅读和教程的理解做一个简单的数学程序。
这是代码:
print('\n Simple Math ')
def num():
if choice == 1:
sum = first_num + second_num
print('Sum is: ', sum)
elif choice == 2:
diff = first_num - second_num
print('Difference is: ', diff)
elif choice == 3:
mul = first_num * second_num
print('Product is: ', mul)
elif choice == 4:
div = first_num / second_num
print('Quotient is: ', div)
while True:
print('\n 1. Add: \n 2. Subtract: \n 3. Multiply: \n 4. Divide: \n')
choice = int(input('Select an operator: '))
if choice > 4 or choice < 1:
choice = int(input('Input only valid selection from above! \nSelect again: '))
first_num = float(input('Enter first number: '))
second_num = float(input('Enter second number: '))
num()
break
我上面的问题是,当我添加“仅从上面输入有效选择!”时 如果用户输入的部分超出了选择的数量,当我尝试从 1 输入到 4 时它不会做任何事情。但是如果我输入 5,它会很好用。
我已经尝试将 first_num 和 second_num 放在 while 循环之外或 def 之上,尝试将 num() 放在 while 之前,仍然给我一个错误。我怀疑“如果选择 > 4 或选择 < 1:”部分使我的代码在输入正确的选择时不返回任何内容。我有点卡住了,不知道下一步该怎么做。
感谢任何帮助...谢谢
原谅我,我真的是一个绝对的初学者......
解决方案
你的代码是一个很好的开始。但是,有一些缺陷。
- 您需要将要使用的变量传递给您的
num
函数 - 你应该个性化输入 3 个数字的逻辑(我在这里使用了一个单独的函数)
下面是一个工作版本。
现在您可以尝试改进它,例如通过添加对 first_num/second_num 值的检查(假设禁止 0 i second_num 进行除法)。您也可以尝试将检查移到validate_input
函数中。
print('\n Simple Math ')
def num(choice, first_num, second_num):
if choice == 1:
sum = first_num + second_num
print('Sum is: ', sum)
elif choice == 2:
diff = first_num - second_num
print('Difference is: ', diff)
elif choice == 3:
mul = first_num * second_num
print('Product is: ', mul)
elif choice == 4:
div = first_num / second_num
print('Quotient is: ', div)
def validate_input(prompt='?: ', input_type=int):
while True:
try:
return input_type(input(prompt))
except ValueError:
print('Incorrect input')
while True:
print('\n 1. Add: \n 2. Subtract: \n 3. Multiply: \n 4. Divide: \n')
choice = -1
while choice > 4 or choice < 1:
choice = validate_input('Select an operator: ')
first_num = validate_input('Enter first number: ', float)
second_num = validate_input('Enter second number: ', float)
num(choice, first_num, second_num)
推荐阅读
- java - 相机 onActivityResult : resultCode 是 RESULT_CANCELED
- c# - 如何从 System.string [][] 类型转换为 System.Iconvertible 类型?
- matlab - Matlab / Octave问题与第三人的代码
- r - 将多边形添加到 SpatialPolygonsDataFrame
- python - DJANGO:无法列出位于我的 django 项目中静态目录中的文件夹的内容
- regex - 如何使用 Nginx Rewrite 或 Regex 等配置多个位置
- java - 使用 Java Spring 进行简单查询时出现异常:`java.sql.SQLSyntaxErrorException:ORA-00933:SQL 命令未正确结束`
- php - Api-platform test Client::getResponse() 被标记为@internal,我应该改用什么?
- sql - 如果用户在一段时间内没有输入任何内容,我该如何开始活动?设置一个计时器并使用文本更改事件启动它?
- javascript - 在 js 上选择过滤器