Python:减法时无类型错误

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

我需要计算“玩家编号”和“玩家编号”之间的差异,但它显示:

TypeError:子类型“NoneType”和“int”的操作数类型不受支持

我理解这个错误。我的代码生成的游戏者号码是无类型,这就是为什么我不能减去它

我如何处理这个问题?有什么想法吗

这是我的密码:

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
use
return
。是的。我正在学习这门课程。我必须在任何地方使用“return”吗?请在代码示例中修复缩进。值得解释的是,在没有return的情况下,
player\u number
只是被设置为
None
,因为询问者似乎不明白这就是它出现的原因。值得解释的是,在没有返回的情况下,
player\u number
只是被设置为
None
,因为询问者似乎不明白这就是它出现的原因。