"TypeError: '>' not supported between instances of 'int' and 'NoneType'"
"TypeError: '>' not supported between instances of 'int' and 'NoneType'"
我正在使用 def 函数,当我 运行 代码时,我得到了 "TypeError: '>' not supported between instances of 'int' and 'NoneType'"。我明白了错误的意思,但是有什么方法可以将非类型更改为 int 吗?
import random
random.randint(1,3)
def P1():
print("pick ")
playerinput = int(input("rock(1), paper(2), scissors(3):"))
if playerinput == 1:
print("Player 1 chose: rock")
elif playerinput == 2:
print("Player 1 chose: paper")
elif playerinput == 3:
print("Player 1 chose: scissors")
return (playerinput)
def P2():
computer = random.randint(1,3)
if computer == 1:
print("CPU chose: rock")
elif computer == 2:
print("CPU chose: paper")
elif computer == 3:
print("CPU 2 chose: scissors")
def winner():
if P1()>P2():
print("Player 1 wins")
def main():
winner()
main()
欢迎来到 SO。
您可能忘记了 return 定义 P2 时的值。
def P2():
computer = random.randint(1,3)
if computer == 1:
print("CPU chose: rock")
elif computer == 2:
print("CPU chose: paper")
elif computer == 3:
print("CPU 2 chose: scissors")
# Here we return the random value chosen
return computer
这样我们现在 returning 一个 int 而不是 NoneType,因此比较 P1()>P2 应该有效。
if P1()>P2():
你的错误发生在这里
在Python中,所有的函数都隐式地returnNone
,并且return语句可以用来给出一个有用的值
def f():
pass
returns None
调用时
def f():
return 1
returns 1
调用时
请注意您的函数 P2
没有 return 语句,因此调用它会导致 None
。
正如您的错误消息所述,int
和 NoneType
之间不支持 >
(大于运算符,您将其与 P2()
的结果一起使用)。一般来说,None
除了==
之外没有可比性,但是在判断一个值是否为None
时,使用is
被认为更好
What is the difference between " is None " and " ==None "
我正在使用 def 函数,当我 运行 代码时,我得到了 "TypeError: '>' not supported between instances of 'int' and 'NoneType'"。我明白了错误的意思,但是有什么方法可以将非类型更改为 int 吗?
import random
random.randint(1,3)
def P1():
print("pick ")
playerinput = int(input("rock(1), paper(2), scissors(3):"))
if playerinput == 1:
print("Player 1 chose: rock")
elif playerinput == 2:
print("Player 1 chose: paper")
elif playerinput == 3:
print("Player 1 chose: scissors")
return (playerinput)
def P2():
computer = random.randint(1,3)
if computer == 1:
print("CPU chose: rock")
elif computer == 2:
print("CPU chose: paper")
elif computer == 3:
print("CPU 2 chose: scissors")
def winner():
if P1()>P2():
print("Player 1 wins")
def main():
winner()
main()
欢迎来到 SO。
您可能忘记了 return 定义 P2 时的值。
def P2():
computer = random.randint(1,3)
if computer == 1:
print("CPU chose: rock")
elif computer == 2:
print("CPU chose: paper")
elif computer == 3:
print("CPU 2 chose: scissors")
# Here we return the random value chosen
return computer
这样我们现在 returning 一个 int 而不是 NoneType,因此比较 P1()>P2 应该有效。
if P1()>P2():
你的错误发生在这里
在Python中,所有的函数都隐式地returnNone
,并且return语句可以用来给出一个有用的值
def f():
pass
returns None
调用时
def f():
return 1
returns 1
调用时
请注意您的函数 P2
没有 return 语句,因此调用它会导致 None
。
正如您的错误消息所述,int
和 NoneType
之间不支持 >
(大于运算符,您将其与 P2()
的结果一起使用)。一般来说,None
除了==
之外没有可比性,但是在判断一个值是否为None
is
被认为更好
What is the difference between " is None " and " ==None "