내가 겪고있는 주된 문제는 사용자가 컴퓨터 (랜덤 기능)를 가지고 놀 때 총 승리를 얻으려고하는 것이다. 하지만 player_choice의 바위 종이 가위로 1, 2 또는 3을 입력 할 때마다이 오류가 계속 발생합니다.파이썬 용 나의 가위 가위 프로그램을 보시길.
Welcome to a game of paper, rock, scissors!
Please input the correct number according
to the object.
Select rock(1), paper(2), or scissors(3): 2
Computer chose ROCK .
You chose PAPER .
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line
114, in <module>
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line
43, in main
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line
106, in determine_winner
builtins.UnboundLocalError: local variable 'win' referenced before assignment
분명히 그 지역 변수 문제. 다른 해결책이 있습니까?
#import the library function "random" so that you can use it for computer
#choice
import random
#define main
def main():
#assign win, lose, and tie variables to zero so that later it can be added
#and displayed
win = 0
lose = 0
tie = 0
#control loop with 'y' variable
play_again = 'y'
#start the game
while play_again == 'y':
#make a welcome message and give directions
print('Welcome to a game of paper, rock, scissors!')
print('Please input the correct number according')
print('to the object.')
#write computer and players choices as value returning functions and
#assign them to variables
computer_choice = get_computer_choice()
player_choice = get_player_choice()
#print outcome
print('Computer chose', computer_choice, '.')
print('You chose', player_choice, '.')
#determine who won by defining a function
determine_winner(computer_choice, player_choice)
#ask the user if they want to play again
play_again = input("Play again? Enter 'y' for yes or 'n' for no. ")
#print results
print('Your total wins are', win, '.')
print('Your total losses are', lose, '.')
print('Your total ties are', tie, '.')
#define computer choice
def get_computer_choice():
#use imported random function from library
choice = random.randint(1,3)
#assign what the computer chose to rock, paper, or scissors
if choice == 1:
choice = 'ROCK'
elif choice == 2:
choice = 'PAPER'
else:
choice = 'SCISSORS'
#return value
return choice
#define player choice
def get_player_choice():
#assign input to variable by prompting user
choice = int(input("Select rock(1), paper(2), or scissors(3): "))
#use while function if user inputs the invalid selection
while choice != 1 and choice != 2 and choice != 3:
print('The valid numbers are rock(type in 1), paper(type in 2),')
print('or scissors(type in 3).')
choice = int(input('Enter a valid number please: '))
#assign what the player chose to rock, paper, or scissors
if choice == 1:
choice = 'ROCK'
elif choice == 2:
choice = 'PAPER'
else:
choice = 'SCISSORS'
#return value
return choice
#determine the winner by assigning the assigned variables
def determine_winner(computer_choice, player_choice):
#if its a tie, add 1 to tie variable and display message
if computer_choice == player_choice:
tie += 1
print("It's a tie!")
#if its a win, add to win variable and display message
elif computer_choice == 'SCISSORS' and player_choice == 'ROCK':
win += 1
print('ROCK crushes SCISSORS! You win!')
elif computer_choice == 'PAPER' and player_choice == 'SCISSORS':
win += 1
print('SCISSORS cut PAPER! You win!')
elif computer_choice == 'ROCK' and player_choice == 'PAPER':
win += 1
print('PAPER covers ROCK! You win!')
#if it does not match any of the win criteria then add 1 to lose and
#display lose message
else:
lose += 1
print('You lose!')
main()
정말 고마워요! 나는이 문제를 수 시간 동안 꼼짝 않고 바라 보았다! –
'main()'함수를 사용하지 않아도 메인 코드를'if __name__ == "__main __":'문 아래에 두는 것은 좋은 생각입니다. –
하단의'if __name__ == "__main__": main()'행은 실제로 내가 본 모든 사람들에 의해 수행됩니다. 하나의 목적은'main' 실행중인 모든 코드없이 파일을 가져올 수 있도록하는 것이라고 생각합니다. 그래서 당신은 가상의'randRGB()'함수 나 외부 스크립트의 파일에있는 어떤 것을 사용할 수 있습니다. – SimonT