Python:减法时无类型错误
我需要计算“玩家编号”和“玩家编号”之间的差异,但它显示: TypeError:子类型“NoneType”和“int”的操作数类型不受支持 我理解这个错误。我的代码生成的游戏者号码是无类型,这就是为什么我不能减去它 我如何处理这个问题?有什么想法吗 这是我的密码:Python:减法时无类型错误,python,nonetype,Python,Nonetype,我需要计算“玩家编号”和“玩家编号”之间的差异,但它显示: TypeError:子类型“NoneType”和“int”的操作数类型不受支持 我理解这个错误。我的代码生成的游戏者号码是无类型,这就是为什么我不能减去它 我如何处理这个问题?有什么想法吗 这是我的密码: def name_to_number(name): if name == "rock": name = 0 elif name == "paper": name = 1 elif nam
def name_to_number(name):
if name == "rock":
name = 0
elif name == "paper":
name = 1
elif name == "Spock":
name = 2
elif name == "lizard":
name = 3
elif name == "scissors":
name = 4
else:
print 'Name is not listed:',name
def number_to_name(number):
if number == 0:
print "rock"
elif number == 1:
print "Spock"
elif number == 2:
print "paper"
elif number == 3:
print "lizard"
elif number == 4:
print "scissors"
else:
print 'Your number is not valid:',number
def rpsls(player_choice):
if player_choice == "rock":
print 'Player choses', player_choice
player_number = name_to_number(player_choice)
elif player_choice == "Spock":
print 'Player choses',player_choice
player_number = name_to_number(player_choice)
elif player_choice == "paper":
print 'Player choses',player_choice
player_number = name_to_number(player_choice)
elif player_choice == "lizard":
print 'Player choses',player_choice
player_number = name_to_number(player_choice)
elif player_choice == "scissors":
print 'Player choses',player_choice
player_number = name_to_number(player_choice)
else:
print "Name not in list",player_choice
import random
comp_number = random.randrange(0,4)
if comp_number == 0:
print "Computer choses",number_to_name(0)
elif comp_number == 1:
print "Computer choses",number_to_name(1)
elif comp_number == 2:
print "Computer choses",number_to_name(2)
elif comp_number == 3:
print "Computer choses",number_to_name(3)
elif comp_number == 4:
print "Computer choses",number_to_name(4)
diffrence = player_number - comp_number
if diffrence % 5 == 1 or 2:
print 'Player wins!'
elif (diffrence % 5) == 3 or 4:
print 'Computer wins!'
else:
print 'Game tie'
rpsls("rock")
你有这个任务
player_number = name_to_number(player_choice)
但是name\u to\u number
中的if/elif/else
案例中没有一个使用return
关键字。要从该函数返回一个值,您需要执行以下操作
def name_to_number(name):
if name == "rock":
return 0
elif name == "paper":
return 1
elif name == "Spock":
return 2
elif name == "lizard":
return 3
elif name == "scissors":
return 4
else:
print 'Name is not listed:',name
您的number\u to\u name
函数也一样您有这个助手
player_number = name_to_number(player_choice)
但是name\u to\u number
中的if/elif/else
案例中没有一个使用return
关键字。要从该函数返回一个值,您需要执行以下操作
def name_to_number(name):
if name == "rock":
return 0
elif name == "paper":
return 1
elif name == "Spock":
return 2
elif name == "lizard":
return 3
elif name == "scissors":
return 4
else:
print 'Name is not listed:',name
您的number\u to\u name
函数未测试的修复程序也是如此“return”语句丢失。对字符串和int使用相同的变量名不是很好的编程风格
def name_to_number(name):
number = -1
if name == "rock":
number = 0
elif name == "paper":
number = 1
elif name == "Spock":
number = 2
elif name == "lizard":
number = 3
elif name == "scissors":
number = 4
else:
print 'Name is not listed:',name
return number #This line was missing
未经测试的修复。”“return”语句丢失。对字符串和int使用相同的变量名不是很好的编程风格
def name_to_number(name):
number = -1
if name == "rock":
number = 0
elif name == "paper":
number = 1
elif name == "Spock":
number = 2
elif name == "lizard":
number = 3
elif name == "scissors":
number = 4
else:
print 'Name is not listed:',name
return number #This line was missing
您是否正在学习《Python交互式编程入门》
,Coursera?使用return
,而不是print
。是的。我正在学习这门课程。我必须在任何地方使用“return”吗?不过请修复代码示例中的缩进。你是在学习Python交互式编程入门课程吗?而不是使用print
usereturn
。是的。我正在学习这门课程。我必须在任何地方使用“return”吗?请在代码示例中修复缩进。值得解释的是,在没有return的情况下,player\u number
只是被设置为None
,因为询问者似乎不明白这就是它出现的原因。值得解释的是,在没有返回的情况下,player\u number
只是被设置为None
,因为询问者似乎不明白这就是它出现的原因。