Мне нужно вычислить разницу между «player_number» и «comp_number», но он говорит:Python: Нет ошибка типа, а вычитание
TypeError: unsupported operand type(s) for Sub: 'NoneType' and 'int'
Я понимаю эту ошибку. Мой код генерирует player_number - это тип «Нет», поэтому я не могу его вычесть.
Как я могу справиться с этой проблемой? Есть идеи?
Вот мой код:
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")
Вы принимаете «Введение в интерактивное программирование в Python», Coursera? – ZdaR
Вместо 'print' используйте' return'. – ZdaR
есть. Я беру этот курс. – Yousuf