*不支持的操作数类型:'NoneType'和'NoneType'(Python)

时间:2013-09-15 07:10:10

标签: python

我目前正忙着定义函数,我收到了这个错误。我只是想做一个简单的功能,用户输入2个数字,然后将它们相乘。还请尽可能简单地解释我做错了什么。 (我是菜鸟)

def userinput():
    while True:
        try:
            number = int(input("Number: "))
            break
        except ValueError:
            print("NOPE...")

def multiply(x,y):
    z = x * y
    print(z)

while True:
    x = userinput()
    y = userinput()
    multiply(x,y)
    again = input("Again? ")
    if again == "No" or again == "no":
        break
    else:
        pass

1 个答案:

答案 0 :(得分:3)

在你的函数userinput()中,你永远不会返回number,所以python默认为return None。因此,当您将xy传递给multiply()时,您正在尝试None * None,因此会出错。

return number

中的try / except结构之后

userinput()


如果您还想检查花车,可以这样做:

while True:
    number = input("Number: ")
    try:
        return int(number)
    except ValueError:
        try:
            return float(number)
        except ValueError:
            print("NOPE...")