-
[Python] 단어 맞추기 게임내일배움캠프/Python 2024. 6. 19. 18:34
단어 맞추기 게임 이번 문제는 단어 맞추기 게임입니다.
아래 규칙에 맞도록 게임을 만들어 봅시다!
규칙 STEP 1
랜덤으로 영어 단어를 만들어줍니다.
1-0 기초 세팅하기
list='abcdefghijklmnopqrstuvwxyz'
x = ''
a = 0list는 인덱싱을 사용하여 랜덤으로 뽑을 리스트입니다.
x는 랜덤으로 뽑은 알파벳을 넣을 변수입니다.
a는 문자의 길이만큼 알파벳 뽑기를 반복하기 위해 만든 변수입니다.
1-1 만들려는 문자의 길이를 정하기
import random
length = random.randrange(3, 8)
print(f'힌트: 단어의 길이는 {length} 입니다!')파이썬의 내장함수인 random을 불러와서 랜덤으로 길이를 정합니다.
문자의 길이는 3~7로 정했습니다.
1-2 문자의 길이만큼 랜덤으로 알파벳을 뽑아서 x에 할당하기
while a != length:
x = x + (list[random.randrange(26)])
a += 1list에 들어있는 알파벳을 랜덤으로 뽑아서 x에 넣어줍니다.
그리고 a가 위에서 정한 문자의 길이와 같아질 때 while문을 스톱합니다.
랜덤으로 영어 문자 만들기 위의 코드들을 실행했을 때의 결과입니다.
랜덤으로 문자의 길이를 뽑고 길이에 맞는 단어가 잘 생성되었습니다.
(다 만들고 나서 힌트를 보니 미리 만들어둔 단어 리스트를 문제로 내는 방식이었습니다..
하지만 오늘은 여기까지..)STEP 2
문제의 규칙을 구현해주기
2-1 변수 세팅해주기
life = 9
trial = ['-'] * lengthlife는 목숨을 나타내고 9개를 할당하였습니다.
trial은 맞춘 정답을 보여주는 변수입니다.
trial을 '_'가 아닌 ['_']와 같은 리스트로 만들어준 이유는
알파벳을 맞췄을 때 알파벳을 해당 위치에 나타내려고 했으나
문자열은 불변형이라서 '_'를 알파벳으로 변경할 수 없었습니다..
한참을 헤매다가 겨우 해결했습니다.. 😢
2-2 정답 맞추기
while life != 0 and x != ''.join(trial):
i = input('알파벳을 입력하세요 >>> ')
if i in x:
for index in range(len(x)):
if x[index] == i:
trial[index] = i
print(''.join(trial))
else:
life = life -1 print(f'목숨이 {life}개 남았습니다!')while문은 life가 0이 아니거나 모든 정답을 맞추지 못하는 동안은 계속 반복하도록 하였습니다.
input을 통해 알파벳을 입력받고
입력 알파벳이 정답 x에 들어있다면
인덱스를 추출하여 입력 알파벳을 trial에 넣어주도록 하였습니다.
trial은 리스트로 만들었기 때문에
''join.(trial)을 사용하여 정답 x와 비교를 하도록 했습니다.
만약 해당 알파벳이 없다면
목숨을 하나 깎도록 하였습니다.
STEP 3
결과 출력하기
if x == ''.join(trial):
print('축하합니다! 승리하셨습니다!')
else:
print(f'패배하셨습니다.. 정답은 {x} 입니다.')만약 할당된 목숨 9개 이내에 문제를 맞췄다면
'축하합니다! 승리하셨습니다!'를 출력해줍니다.
문제를 맞추지 못하였다면
'패배하셨습니다..'라는 문구와 함께 정답을 출력합니다.
f-string을 사용하여 출력을 하였습니다.
STEP 4
실행해보기
실행 코드 a를 입력해봤습니다.
정답에 a가 있어서 해당 위치에 알파벳 a가 출력되었습니다!
b를 입력해보았는데요,
틀려서 목숨이 하나 깎였습니다...
정답을 맞췄을 때는
.
.
.
승리 승리 메세지가 성공적으로 출력되었습니다.
반대로 목숨이 0이 되면
.
.
.
패배 패배 메세지가 출력되었습니다.
랜덤으로 문자의 길이를 정하고 문자를 만드는 것은 쉬웠습니다.
하지만 맞춘 알파벳을 해당 위치에 나타나게 만드는 과정에서 어려움이 있었습니다.
문제를 푸는 과정에서 문자가 불변자료형임을 알게 되었고
이를 위해 가변 자료형인 리스트를 이용하고 join함수를 통해 하나의 문자로 만들었습니다.
시행착오를 거쳐가며 하나하나 수정 작업을 거쳐서 그런지
깔끔해 보이는 코드로 완성하지는 못했습니다.
저의 방법이 다른 사람보다 나은 지도 모르겠습니다.
아쉽지만
어려운 문제를 즐겁게 푸는 과정에서 재미를 느꼈고
그것으로 충분히 만족합니다.
https://colab.research.google.com/drive/1o_c-hL3MXf91vLTmVE7q5fS1eKPZGppS?usp=sharing
Google Colab Notebook
Run, share, and edit Python notebooks
colab.research.google.com
제가 만든 단어 맞추기 게임 코드입니다.
'내일배움캠프 > Python' 카테고리의 다른 글
[Python] Lambda 함수 (0) 2024.07.02 [Python] 행렬의 덧셈 (0) 2024.06.25 [Python] 스파르타 자판기 (0) 2024.06.17 [Python] 랜덤 닉네임 생성하기 (0) 2024.05.31 왜 파이썬인가? (0) 2024.05.30