study

[파이썬] 4강 랜덤 모듈과 리스트 함수로 가위바위보 게임 만들기_코드 비교

kmk_sweetlife 2024. 3. 17. 23:13
반응형

4일차 강의 요약

 어쩌다보니 4강도 재밌게 완수했다 ㅎㅎㅎ 4일차 강의에서는 파이썬의 무작위화(randomization)화 개념과 리스트를 활용하여 데이터를 담는 연습을 중점적으로 배웠다. 주사위를 던지거나 가위바위보 내기를 할 때 어떤 수가 나올지 예측 불허의 상황을 만나게 되는데 파이썬에서는 random 모듈을 활용하면 이러한 무작위적인(=랜덤한) 상황을 코드로 표현해낼수 있다. 

 

 또한 랜덤한 경우의 수를 리스트(List)라는 형식에 담아 뽑아 쓸 수 있는데, 이 리스트는 중첩하여 사용할 수도 있고('Nested List') 리스트 안에 자료를 추가(append)하거나 제거할 수도 있다. 

 

프로젝트: 가위바위보 게임 만들기

겉보기엔 아주 단순한 게임이고, 누군가는 매우 단순한 코드라 할 수 있지만 나에게는 매우 난이도 있었던 과제였다 ㅎㅎㅎ

쉽게 설명하면 나와 컴퓨터가 가위바위보를 하는 것인데, 나(사용자)의 선택은 제어 가능하지만 컴퓨터가 가위바위보중 뭘 낼지는 랜덤하게 정해져야 한다. 따라서 랜덤 함수가 쓰여야 하고, 내가 낸 값과 컴퓨터가 낸 값을 비교하여 누가 승자인지도 가리는 문구 또한 출력해야 하는게 이번 과제의 핵심이었다. 

내가 작성한 코드로 동작한 가위바위보 게임의 결과물

 

1. 내가 쓴 코드

(중간에 수정을 한번 해서, 완벽하게 비교해서 보긴 어렵다.)

import random

#Write your code below this line 👇
choice = [rock, paper, scissors]


my_choice = int(input("Type 0 for Rock, 1 for Paper or 2 for Scissors\n"))

if my_choice >= 3 or my_choice <0:
 print("You typed an invalid number, you lose!") 
else:
 print(choice[my_choice])

 computer_choice= random.randint(0,2)
 print("Computer chose: ")
 print(choice[computer_choice])


 if my_choice == 2 and computer_choice == 1:
  print("You win!")
 elif my_choice ==0 and computer_choice ==2:
  print("You win!")
 elif my_choice == 1 and computer_choice ==0:
  print("You win!")
 elif computer_choice == 2 and my_choice == 1:
  print("You lose!")
 elif computer_choice ==0 and my_choice ==2:
  print("You lose!")
 elif computer_choice == 1 and my_choice ==0:
  print("You lose!")
 elif my_choice == computer_choice:
  print("Try again.")

 

2. 안젤라 선생님 코드

import random

game_images = [rock, paper, scissors]

user_choice = int(input("What do you choose? Type 0 for Rock, 1 for Paper or 2 for Scissors.\n"))
print(game_images[user_choice])

computer_choice = random.randint(0, 2)
print("Computer chose:")
print(game_images[computer_choice])

if user_choice >= 3 or user_choice < 0: 
  print("You typed an invalid number, you lose!") 
elif user_choice == 0 and computer_choice == 2:
  print("You win!")
elif computer_choice == 0 and user_choice == 2:
  print("You lose")
elif computer_choice > user_choice:
  print("You lose")
elif user_choice > computer_choice:
  print("You win!")
elif computer_choice == user_choice:
  print("It's a draw")

 

결론

  • 예상했던 범위(0, 1, 2 중 입력)가 아니라, 의도하지 않은 값(3 이상의 아무 값)을 사용자가 넣는 경우에 대해서도 에러로 정의해주면 더 좋다. 모든 경우의 수에 대비하게끔 출력이 된다면 좀 더 프로페셔널 해보일 수 있다. 
  • 오늘 배운 가위바위보 게임은 사용자가 값을 입력하면 바로 결과가 리턴되면서 끝이 나는데, 만약 사용자와 컴퓨터가 비긴 게임이어서 다시 한번더 진행해야 한다면? 이것을 코드로 구현하려면 아마 반복문을 이용해야 겠지? 라는 생각까지만 함 (5강에서 배울 예정)
  • 점점 어렵다. 일단 시작점을 정하는 일이 제일 어렵고, 여기서부터 조건에 다다르기까지의 과정을 코드로 작성해나가는 과정이 점점 복잡해지고 있는 듯 하다. 그치만 아직 재밌으므로 시간이 더 걸리더라도 끝까지 해보련다ㅎㅎㅎ