Find smaller number from 2 provided - works, but throws an error. TypeError: cannot unpack non-iterable NoneType object

Find smaller number from 2 provided - works, but throws an error. TypeError: cannot unpack non-iterable NoneType object

我又进入了 python,但我不明白为什么它会给我一个错误,同时工作得很好。

def smaller_num(x, y):
    if x > y:
        number = y
    else:
        number = x
print(f'Smaller number, between {x} and {y} is {number}')

def main():
    x, y = smaller_num(x=int(input('Enter first number: ')), y=int(input('Enter second number: ')))
    smaller_num(x, y)


if __name__ == '__main__':
    main()
  • 你的函数return没什么,你可以把它修改成return数,就是x和y之间找到的较小的数
  • 您尝试从 returns nothing/None 的函数中捕获两个值 x 和 y(一个元组),因此它不能很好地工作
  • 最好获取returned值,在代码的main()部分打印答案。

代码:

def smaller_num(x, y):
    if x > y:
        number = y
    else:
        number = x
    return number

def main():
    x=int(input('Enter first number: '))
    y=int(input('Enter second number: '))
    number = smaller_num(x, y)
    print(f'Smaller number, between {x} and {y} is {number}')

if __name__ == '__main__':
    main()

小事:您的主要 x、y 正在为两者调用您的函数。主调用循环有语法错误。

def smaller_num(x, y): 
    number = None
    if x > y: number = y 
    else: number = x 
    print(f'Smaller number, between {x} and {y} is {number}')

def main(): 
    x=int(input('Enter first number: '))
    y=int(input('Enter second number: '))
    smaller_num(x, y)

if __name__ == '__main__': 
    main()

这是因为您试图从函数中为 x 和 y 赋值,该函数 return 什么都不做,只打印结果。即名为 smaller_num

的函数
def main(): 
    x=int(input('Enter first number: '))
    y=int(input('Enter second number: '))
    smaller_num(x, y)

这可能是解决问题的一种方法。请注意,这里的 x 和 y 是从输入分配的,然后打印较小的数字。 另外,如果你真的想在一行中完成,那么:

def main(): 
    smaller_num(int(input('Enter first number: ')), int(input('Enter second number: ')))

这会很好用。您只需要将 main 函数修改为其中任何一个即可。