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

*的操作数类型不受支持:';非类型';和';非类型';(Python),python,Python,我目前只是在玩弄定义函数,我得到了这个错误。我只是想做一个简单的函数,用户输入两个数字,然后将它们相乘。另外,请尽可能简单地解释我做错了什么。(我是个笨蛋) 在函数userinput()中,您永远不会返回number,因此python默认为返回None。因此,当您将x和y传递到multiply()时,您试图执行None*None,因此出现错误 userinput()中的try/except结构之后的returnnumber 如果还要检查浮动,可以执行以下操作: while True:

我目前只是在玩弄定义函数,我得到了这个错误。我只是想做一个简单的函数,用户输入两个数字,然后将它们相乘。另外,请尽可能简单地解释我做错了什么。(我是个笨蛋)


在函数
userinput()
中,您永远不会返回
number
,因此python默认为
返回None
。因此,当您将
x
y
传递到
multiply()
时,您试图执行
None*None
,因此出现错误

userinput()中的try/except结构之后的
returnnumber


如果还要检查浮动,可以执行以下操作:

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

非常感谢!:)@不客气!别忘了!或者更好的是,不要费心创建
number
变量。只需返回int(输入(“数字”)
。那么,就不需要
中断符了。@Haidro还有,我该怎么做才能让他们输入一个十进制数呢?当我现在运行代码时,每次我输入一个小数点,它都不接受它并停留在循环中。@Suds2在
except:
中,您可以执行另一个
try/except
结构:。我会编辑我的答案,你可以再次执行
如果。lower()==“no”:
并捕获所有类型的“no”,包括“no”和“no”。此外,所有这些代码都在一个函数中吗?否则,上一个
if
块中的
中断
while True:
    number = input("Number: ")
    try:
        return int(number)
    except ValueError:
        try:
            return float(number)
        except ValueError:
            print("NOPE...")