Сканирующие ножницы для бумаги, когда я запускаю его, программа говорит, что решение ссылается до того, как оно назначено, хотя пользовательский выбор и выбор компьютера отображаются в порядке, я застрял в этом довольно долгое время и новичок в программирование.unboundlocalerror с отображением вывода
import random
def main():
userinput = int(input("First just enter 0 for rock, 1 for paper, or 2 for scissors! "))
computernumber = random.randint(0,2)
while userinput != 0 and userinput != 1 and userinput != 2:
userinput = int(input("Enter 0 for rock, 1 for paper, or 2 for scissors! "))
print ("You chose ",userchoice(userinput),)
print ("Computer chose ",computerchoice(computernumber),)
print (decision(userchoice,computerchoice))
def userchoice(userinput):
if userinput == 0:
userchoice = "rock";
elif userinput == 1:
userchoice = "paper";
elif userinput == 2:
userchoice = "scissors";
return userchoice
def computerchoice(computernumber):
if computernumber == 0:
computerchoice = "rock";
elif computernumber == 1:
computerchoice = "paper";
elif computernumber == 2:
computerchoice = "scissors";
return computerchoice
def decision(userchoice,computerchoice):
if (userchoice == computerchoice):
decision = "It's a draw!";
elif (userchoice == "rock"):
if(computerchoice == "paper"):
decision = "Computer wins!";
elif (userchoice == "paper"):
if(computerchoice == "rock"):
decision = "You win!";
else:
decision = "Computer wins!";
elif (userchoice == "scissors"):
if(computerchoice == "rock"):
decision = "Computer wins!";
else:
decision = "You win!";
return decision
main()
выход:
first just enter 0 for rock, 1 for paper, or 2 for scissors! 1
You chose paper
Computer chose rock
Traceback (most recent call last):
File "MorerockpaperscissorsEM.py", line 60, in <module>
main()
File "MorerockpaperscissorsEM.py", line 17, in main
print(decision(userchoice,computerchoice))
File "MorerockpaperscissorsEM.py", line 57, in decision
return decision
UnboundLocalError: local variable 'decision' referenced before assignment
Какая трассировка вы получаете? Одна из проблем может заключаться в том, что вы повторно используете имя функции 'userchoice' как локальную переменную внутри функции (что может быть ОК, это просто мешает вам вызывать функцию рекурсивно), а также как аргумент' решение (что скорее всего будет логической ошибкой). – chepner
Я добавил traceback –