首页 > 解决方案 > 即使提供了正确的输入,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:”部分使我的代码在输入正确的选择时不返回任何内容。我有点卡住了,不知道下一步该怎么做。

感谢任何帮助...谢谢

原谅我,我真的是一个绝对的初学者......

标签: python

解决方案


你的代码是一个很好的开始。但是,有一些缺陷。

  1. 您需要将要使用的变量传递给您的num函数
  2. 你应该个性化输入 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)

推荐阅读