import random
def rock_paper_scissors():
# 컴퓨터의 선택 (랜덤이라는 모듈에서 초이스 함수 가져옴)
computer_choice = random.choice(['가위', '바위', '보'])
# 사용자의 승, 패, 무승부 횟수를 기록하기 위한 변수
win = 0
lose = 0
draw = 0
while True:
# 사용자 입력 받기
user_choice = input("가위, 바위, 보 중 하나를 선택하세요: ")
# 사용자가 유효한 입력을 했는지 확인
if user_choice in ['가위', '바위', '보']:
# 사용자와 컴퓨터의 선택 출력
print(f"사용자: {user_choice}, 컴퓨터: {computer_choice}")
# 승부 결정
if user_choice == computer_choice: #무승부출력
print("무승부!")
draw += 1
elif (user_choice == '가위' and computer_choice == '보') or \
(user_choice == '바위' and computer_choice == '가위') or \
(user_choice == '보' and computer_choice == '바위'):
print("사용자 승리!")
win += 1 #사용자가 이겼을 경우
else:
print("컴퓨터 승리!")
lose += 1 #나머지는 컴퓨터가 이기는경우로
# 게임을 다시 시작할지 묻는 루프
play_again = input("다시 하시겠습니까? (y/n): ")
if play_again.lower() == 'y':
rock_paper_scissors() #continue 로 대체해도되는것 같음
elif play_again.lower() == 'n':
print("게임을 종료합니다.")
break
else:
print("유효한 입력이 아닙니다.")
continue
# 게임 통계 출력 - f string사용
print(f"승: {win} 패: {lose} 무승부: {draw}")
rock_paper_scissors()
코드설명
- import random: 랜덤한 값을 생성하기 위해 필요한 random 모듈을 가져옴
- def rock_paper_scissors():: rock_paper_scissors라는 함수를 정의 - 이 함수는게임을 실행하는 역할
- computer_choice = random.choice(['가위', '바위', '보']): 컴퓨터가 랜덤으로 '가위', '바위', '보' 중 하나를 선택하게함
- win, lose, draw 변수는 사용자의 승, 패, 무승부 횟수를 기록하기 위한 변수, 처음에는 모두 0으로 초기화
- while True:: 무한 루프 시작/ 사용자가 원할 때까지 게임을 계속
- user_choice = input("가위, 바위, 보 중 하나를 선택하세요: "): 사용자값을 입력받음
- if user_choice in ['가위', '바위', '보']:: 사용자가 유효한 입력을 했는지 확인합니다. 입력이 '가위', '바위', '보' 중 하나인지 검사합니다.
- print(f"사용자: {user_choice}, 컴퓨터: {computer_choice}"): 사용자와 컴퓨터의 선택을 출력
- 게임의 승패를 결정하고, 결과를 출력. 만약 사용자가 이기면 win 변수를 증가, 비기면 draw 변수를, 지면 lose 변수를 증가
- play_again = input("다시 하시겠습니까? (y/n): "): 사용자에게 게임을 다시 시작할지 물어봄
- if play_again.lower() == 'y':: 사용자가 'y'를 입력하면 다시 게임을 실행/ 재귀적으로 함수를 호출 ->게임을 다시 시작
- elif play_again.lower() == 'n':: 사용자가 'n'을 입력하면 게임을 종료, break문을 통해 무한 루프를 종료후 코드를 실행
- else:: 'y'나 'n' 이외의 입력이 들어온 경우/ 잘못된 입력임을 출력, 다시 입력을 받기 위해 continue를 사용하여 반복문의 처음으로 돌아감
- print(f"승: {win} 패: {lose} 무승부: {draw}"): 게임 통계를 출력/ 이 부분은 게임 종료(break) 후에만 실행
- rock_paper_scissors(): 마지막으로 함수를 호출
- 파이썬 조건식에서는 길이가 긴 식을 줄바꿈 할때는 \를 끝에 붙여줘야함
'Til' 카테고리의 다른 글
Til 24.02.27 -클래스와 인스턴스 -파이썬 (1) | 2024.02.27 |
---|---|
Til 24.02.27 -파이썬 개인과제 가위바위보 게임 웹으로만들기 (파이썬 개발환경 참고) (1) | 2024.02.27 |
Til 24.02.26 파이썬 개인과제 - 업다운게임 (0) | 2024.02.26 |
Til 24.02.23 -파이썬 (0) | 2024.02.23 |
Til 24.02.21- python - pycham (0) | 2024.02.22 |