가위바위보 게임 만들기(4/21)
오늘 배운 개념: for문
for문
파이썬의 for문은 반복문 중 하나로, 순서가 있는 자료형(리스트, 튜플, 문자형 등)의 요소를 반복해서 실행할 때 사용된다.
for문의 작성방식은 아래와 같다.
for 변수 in 순서가 있는 자료형:
실행할 내용
반복되는 요소의 개수에 따라 실행횟수가 결정된다.
예를 들어, 0부터 4까지의 정수를 출력하는 for문은
for i in range(5):
print(i)
이렇게 작성할 수 있다.
실행결과는
0
1
2
3
4
range안에 숫자 미만까지 정수를 출력한다.
그러니까 0부터 4까지 출력한다. randint함수랑 헷갈리지 말 것!( randint(0,5)는 0부터 5까지 중 하나임)
또한 range()함수는 지정된 범위의 연속된 정수를 생성하는데 사용된다.
()안에 인자로 시작점, 끝점, 증가량을 받는다.
range(시작점, 끝점, 증가량)
인자를 지정하지 않으면, 시작점은 0, 증가량은 1로 지정된다.
또한, 문자열도 for문에서 사용될 수 있다.
for letter in 'Hello'
print(letter)
출력결과
'H'
'e'
'l'
'l'
'o'
for문을 활용해서 가위바위보 게임 만들기
while문을 활용해서 만드는 생각밖에 들지 않아서 약간 뇌정지..
그래서 한개의 변수가 있는 배열을 지정해서 for문을 돌리고,
사용자가 계속하고 싶으면 그 배열에 하나씩 추가하여
계소 돌리는 방법을 생각해 봤다.
#가위바위보 게임 만들기
import random
import os
art = {
1: '''
_______
---' ____)____
______)
__________)
(____)
---.__(___)
''',
2: '''
_______
---' ____)
(_____)
(_____)
(____)
---.__(___)
''',
3: '''
_______
---' ____)____
______)
_______)
_______)
---.__________)
''',
}
cnt = 0
win = 0
life = [1]
for i in life: #for문으로 가위바위보 만들어보기
# 가위바위보 아스키 아트 출력
# 1. 사람은 는 가위, 바위, 보 중 하나를 선택한다.
cnt += 1
print("가위, 바위, 보 중 하나를 생각하세요")
user_choice = int(input("(1. 가위 /2. 바위 /3. 보) : "))
choice = {1:'가위', 2:'바위', 3:'보'}
print(f"당신의 선택은...{choice[user_choice]}")
if user_choice == 1:
print(art[1])
elif user_choice == 2:
print(art[2])
else:
print(art[3])
# 2. 컴퓨터의 결과는 랜덤으로 출력한다.
# 랜덤 함수로 결정한다.
computer_choice = random.randint(1, 3)
if computer_choice == 1:
print("컴퓨터는 가위를 선택했습니다.")
print(art[1])
elif computer_choice == 2:
print("컴퓨터는 바위를 선택했습니다.")
print(art[2])
else:
print("컴퓨터는 보를 선택했습니다.")
print(art[3])
# 2. 결과 출력
if user_choice - computer_choice == 0: # 비겼을 때
print("비겼습니다!")
elif user_choice - computer_choice == 1 or user_choice - computer_choice == -2:#이겼을 때
print("당신이 이겼습니다.")
win += 1
else: #졌을 때
print("당신이 졌습니다.")
user_wants_continue = 0
#3. 다시 할지 질문하기
while user_wants_continue != 1:
game_continue = input("다시 하시겠습니까?(y/n): ").lower()
#사용자가 둘 중 하나로만 입력하도록 하기
# 4. 다시 한다면 처음으로 돌아가기
if game_continue == 'y':
print("게임을 다시 진행합니다.")
user_wants_continue = 1
life.append('1')
os.system("cls")
elif game_continue == 'n':
user_wants_continue = 1
win_per = round(win/cnt * 100,2)
print(f"총 {cnt}번 게임해서 {win}번 이겼습니다. 당신의 승률은 {win_per}%입니다.")
else:
print("y와 n중 하나로만 입력해 주세요!")
중간에 컴퓨터가 생각하는 부분을 for문으로 넣었는데, 교수님이 가위바위보 할 때 생각하고 내냐고 하셔서
아하! 하고 바로 삭제했다. 아직 c언어의 게임만들기에서 벗어나지 못했나보다. sleep을 오만군데 넣고 싶어진다.
출력결과
'개발공부 > Python' 카테고리의 다른 글
[파이썬] UP & DOWN 게임 만들기(while, for, if, random, isdigit 사용) (0) | 2023.04.21 |
---|---|
[파이썬] if문 개념 , if문 활용해 팀별 문제내고 풀기 (1) | 2023.04.21 |
[파이썬] while문으로 구구단 찍기, 별찍기 (0) | 2023.04.21 |
파이썬으로 커피 자판기 만들기 (1) | 2023.04.16 |
파이썬으로 숫자 맞추기 게임 만들기 (1) | 2023.04.15 |