goodthings4me.tistory.com
rock-paper-scissors 우리말로 가위바위보 게임 (또는 묵찌빠 게임)을 파이썬으로 짜보았다. 터미널 기반에서 실행이 되는 버전을 먼저 코딩하고, 이어서 tkinter 기반으로로 만들어 볼 생각이다.
파이썬으로 만든 가위 바위 보 게임
- 사용자가 가위, 바위, 보 중 하나를 입력하고, 컴퓨터는 '가위 바위 보' 리스트에서 random.randint() 함수로 하나를 임의로 선택한다.
- '승 패 비김' 또한 리스트로 만들어서 if 조건문으로 비교하여 게임 결과를 표시한다.
- 게임은 3세 판으로 진행하고 더 진행 여부를 물은 후 계속하던지 종료하던지 한다.
- 입력 오류 등의 처리, 게임 카운트, 승/패/비김 카운트 등을 해서 출력한다.
※ 파이썬 Tkinter 모듈로 만든 가위바위보 게임 [프로그램다운로드]
[소스 코드]
import random
def rock_paper_scissors():
game = ['가위', '바위', '보']
game_result = ['승', '패', '비김']
game_cnt = 1
user_win = 0
computer_win = 0
while True:
if game_cnt < 4:
print(f'\n{"="*5} 가위.바위.보 3세판 게임 중 {game_cnt}번째 {"="*5}')
user = input('\n가위/바위/보 중 1개 입력>> ')
if not user in game:
print('입력 오류! 다시 입력하세요.')
continue
computer = game[random.randint(0, 2)]
# print(f'\nUser {user}, Computer {computer}')
print()
if user == game[0]:
if computer == game[0]:
print(f'User:{user} : Computer:{computer}\n"{game_result[2]}"')
elif computer == game[1]:
print(f'User:{user} : Computer:{computer}\n"Computer {game_result[0]}"')
computer_win += 1
elif computer == game[2]:
print(f'User:{user} : Computer:{computer}\n"User {game_result[0]}"')
user_win += 1
elif user == game[1]:
if computer == game[0]:
print(f'User:{user} : Computer:{computer}\n"User {game_result[0]}"')
user_win += 1
elif computer == game[1]:
print(f'User:{user} : Computer:{computer}\n"{game_result[2]}"')
elif computer == game[2]:
print(f'User:{user} : Computer:{computer}\n"Computer {game_result[0]}"')
computer_win += 1
elif user == game[2]:
if computer == game[0]:
print(f'User:{user} : Computer:{computer}\n"Computer {game_result[0]}"')
computer_win += 1
elif computer == game[1]:
print(f'User:{user} : Computer:{computer}\n"User {game_result[0]}"')
user_win += 1
elif computer == game[2]:
print(f'User:{user} : Computer:{computer}\n"{game_result[2]}"')
print(f'\nUser vs Computer - {user_win} 대 {computer_win}\n')
game_cnt += 1
continue
if game_cnt > 3:
while True:
game_continue = input('게임을 더 하시겠습니까?..("y/n")>>')
if game_continue in ('n', 'N'):
print('\n게임을 종료합니다.')
return False
elif game_continue in ('y', 'Y'):
game_cnt = 1
user_win = 0
computer_win = 0
break
else:
print('입력 오류! 다시 입력하세요.')
continue
rock_paper_scissors()
[실행 결과]
===== 가위.바위.보 3세판 게임 중 1번째 =====
가위/바위/보 중 1개 입력>> 보
User:보 : Computer:보
"비김"
User vs Computer - 0 대 0
===== 가위.바위.보 3세판 게임 중 2번째 =====
가위/바위/보 중 1개 입력>> 가위
User:가위 : Computer:보
"User 승"
User vs Computer - 1 대 0
===== 가위.바위.보 3세판 게임 중 3번째 =====
가위/바위/보 중 1개 입력>> 보
User:보 : Computer:바위
"User 승"
User vs Computer - 2 대 0
게임을 더 하시겠습니까?..("y/n")>>ㅛ
입력 오류! 다시 입력하세요.
게임을 더 하시겠습니까?..("y/n")>>y
===== 가위.바위.보 3세판 게임 중 1번째 =====
가위/바위/보 중 1개 입력>> rk
입력 오류! 다시 입력하세요.
===== 가위.바위.보 3세판 게임 중 1번째 =====
가위/바위/보 중 1개 입력>> 가위
User:가위 : Computer:바위
"Computer 승"
User vs Computer - 0 대 1
===== 가위.바위.보 3세판 게임 중 2번째 =====
가위/바위/보 중 1개 입력>> 가위
User:가위 : Computer:가위
"비김"
User vs Computer - 0 대 1
===== 가위.바위.보 3세판 게임 중 3번째 =====
가위/바위/보 중 1개 입력>> 바위
User:바위 : Computer:보
"Computer 승"
User vs Computer - 0 대 2
게임을 더 하시겠습니까?..("y/n")>>n
게임을 종료합니다.
[난이도 있는 간단한 소스 코드]
import random
def rock_paper_scissors():
rps = ['가위', '바위', '보']
user_win_dict = {'가위':'보','바위':'가위','보':'바위'} # User 기준 '승'인 경우
game_result = ['승', '패', '비김']
user_win = 0
computer_win = 0
game_cnt = '0'
while game_cnt == '0' or not game_cnt.isdigit():
game_cnt = input('\n몇 게임 할까요? : ')
for i in range(int(game_cnt)):
user = ''
while user not in rps:
user = input(f'\n[{i+1}번째 게임]\n가위/바위/보 중 1개 입력하세요 : ')
computer = random.choice(rps)
print(f'\nUser: {user} vs Computer: {computer}')
if user == computer:
print(f'"{game_result[2]}"')
elif user_win_dict[user] == computer:
print(f'User "{game_result[0]}"')
user_win += 1
else:
print(f'User "{game_result[1]}"')
computer_win += 1
print(f'\n게임 결과: User vs Computer - {user_win} 대 {computer_win}\n')
user_win = 0
computer_win = 0
rock_paper_scissors()
- isdigit() : 0 포함 양의 정수와 지수만 True 반환
- random.choice(rps) : parameter는 시퀀스 타입 --> 1개 추출
- rps[random.randint(0, 2)] : parameter는 0 <= x <=2 범위
- random.sample(rps, 1)[0] : parameter는 시쿼스 또는 세트 타입과 N개 --> list 반환
[실행 결과]
몇 게임 할까요? : 5
[1번째 게임]
가위/바위/보 중 1개 입력하세요 : 가위
User: 가위 vs Computer: 바위
User "패"
[2번째 게임]
가위/바위/보 중 1개 입력하세요 : 가이
[2번째 게임]
가위/바위/보 중 1개 입력하세요 : 가위
User: 가위 vs Computer: 가위
"비김"
[3번째 게임]
가위/바위/보 중 1개 입력하세요 : 가위
User: 가위 vs Computer: 보
User "승"
[4번째 게임]
가위/바위/보 중 1개 입력하세요 : 가위
User: 가위 vs Computer: 바위
User "패"
[5번째 게임]
가위/바위/보 중 1개 입력하세요 : 가위
User: 가위 vs Computer: 가위
"비김"
게임 결과: User vs Computer - 1 대 2
[파이썬 Tkinter 모듈로 만든 가위바위보 게임]




구구단 게임
파이썬 기초 예제로 구구단을 게임으로 만들어보는 코딩 연습임. 구구단 게임 함수의 매개변수로 구구단 단수와 답변 제한 시간(초)을 넘겨주면 실행 게임수를 입력받아 설정하고 랜덤 하게 구
goodthings4me.tistory.com
블로그 인기글
Windows 10 탐색기 느려지는 증상과 해결하는 방법
잘 작동하던 Windows 10 탐색기가 갑자기 느려지는 증상이 발생했을 때 어떻게 조치를 하는지 구글에서 찾아보니 많은 해결책들이 있었으나 어떤 것이 정확한 해결책인지는 알 수가 없었다. 그래서 해결방법이라고 제시한 것들을 정리해 보았다. 윈도우 탐색기가 느려지는 증상 해결 방법 어느 순간부터 응용프로그램(VS Code 등)에서 폴더 열기나 파일 불러오기를 했을 때 검색 팝업창이 안 뜨거나 열리는 시간이 엄청 느려지는 증상과, 더불어서 탐색기도 실행이 많이 느려지는 증상이 있었다. 기존에 사용하던 VS Code에 openpyxl 설치 후 실행이 느려지는 증상이 발생하더니 윈도우10 탐색기도 느려져서 사용할 수가 없었다. 노트북에 OS(Windows10)를 설치한지 1년이 다 되어가긴 했지만, 1개월 전..
goodthings4me.tistory.com
엑셀 시트 분리 저장 - 엑셀 파일의 시트를 분리하여 저장하기
엑셀을 사용하다 보면 엑셀 시트를 분리해서 저장해야 할 때가 있다. 최근에도 이런 경우가 발생하여 구글링 후 엑셀 시트 분리 업무를 수행하고 내친김에 다른 사람들도 사용할 수 있도록 파이썬 tkinter로 프로그램으로 만들어 보았다. Excel Sheets 분리 저장하는 프로그램(with 파이썬 Tkinter) ※ 프로그램 다운로드(네이버 MYBOX에서 공유) : ExcelSeparateSheets.zip ▶ 프래그램을 실행하면 다음과 같이 초기 화면이 보인다. 찾아보기 : 엑셀 파일이 있는 폴더를 선택한다. (프로그램이 있는 최상위 디렉터리가 열린다) 실행하기 : 프로그램 실행 버튼 상태 변경 순서 : 실행전 → 실행 중 → Sheet "OOO" 분리 저장 중 → 실행 완료 실행 결과 확인 : 엑셀 파..
goodthings4me.tistory.com
[엑셀] 근무연수 및 근무 개월수 계산하는 함수
직장을 다니다 보면 몇 년 몇 개월 또는 전체 며칠을 다니고 있는지 궁금할 때가 있다. 아니면, 총무나 인사 일을 할 때 직원들의 근속연수 또는 근속개월수 등을 계산하고 싶을 때도 있다. 이런 경우 엑셀 함수를 활용하면 어떨까!! 근무연수 및 근무 개월수 계산 함수 알아보기 엑셀에서 근무연수 또는 근무 개월수 계산하는 것은 datedif() 함수를 사용하면 간단하게 해결할 수 있다. 아래 이미지를 보면서 설명하면, 셀 E1에 기준일자를 입력하고, 근무연수를 구할 때는 =datedif(B3,$E$1,"Y")&"년" 을 입력한다. 근무개월수는 =datedif(B3,$E$1,"M")&"개월" 처럼 입력한다. 일수까지 파악할 때문 별로 없지만, 심심풀이로 구해보고 싶을 때 =datedif(B3,$E$1,"D")..
goodthings4me.tistory.com
'코딩 연습 > 파이썬 기초(예제)' 카테고리의 다른 글
구구단 게임 [파이썬기초예제] (0) | 2022.04.28 |
---|---|
진수 변환 - 2진수 변환, 8진수 변환, 16진수 변환 [파이썬기초예제] (0) | 2022.04.23 |
bmi 계산하기 - 한국인의 체질량 지수 계산 [파이썬기초예제] (0) | 2022.04.20 |
북마크 관리 프로그램 코딩, 엑셀 생성 관리 [파이썬기초(예제)] (0) | 2022.04.17 |
파이썬 반복문 - 김밥 주문 계산하기 [파이썬기초(예제)] (0) | 2022.04.15 |
댓글