파이썬 질문
본문
제가 파이썬을 시작한지 얼마 되지않고 만든 작품입니다. 여기서 혹시 쓸데없는걸 제거하거나 좀더 구문을 효율적으로 바꿀수있는 방법이 있나요?
import random
FOUR = ["prey","send","aqua","holy","corn","loot"]
FIVE = ["color","plain","zebra","drown","quest","paste"]
SIX = ["ground","creamy","hockey","freeze","mother","gentle"]
SEVEN = ["clarify","present","officer","kitchen","chicken","gamepad"]
EIGHT = ["backyard","hospital","kindread","treasure","keyboard","computer"]
NINE = ["unanimous","headphone","pineapple","undertale","guardians","minecraft"]
a = ["","","","","","","","",""]
b = ["","","","","","","","",""]
ERROR = 0
total = 0
chance_int = 0
chance = 8
print("\n 핵맨 게임 시작\n\n\n")
while ( ERROR == 0 ) :
words = int(input("원하는 단어글자 수를 입력하세요 ( 4~9글자 ) : "))
if ( words >= 4 and words <= 9 ) :
break
else :
print("오류\n\n\n")
for i in range(0,words) :
a[i] = "_"
if ( words == 4 ) :
WORD = random.choice(FOUR)
for i in range(0,words) :
b[i] = WORD[i]
elif ( words == 5 ) :
WORD = random.choice(FIVE)
for i in range(0,words) :
b[i] = WORD[i]
elif ( words == 6 ) :
WORD = random.choice(SIX)
for i in range(0,words) :
b[i] = WORD[i]
elif ( words == 7 ) :
WORD = random.choice(SEVEN)
for i in range(0,words) :
b[i] = WORD[i]
elif ( words == 8 ) :
WORD = random.choice(EIGHT)
for i in range(0,words) :
b[i] = WORD[i]
elif ( words == 9 ) :
WORD = random.choice(NINE)
for i in range(0,words) :
b[i] = WORD[i]
while (chance_int < chance):
count = words
print("\n\n\n ",end=" ")
for i in range(0,words) :
print(a[i],end=" ")
print("\n\n")
print("\n 남은 기회 : ",chance-chance_int)
answer = input("\n\n영어 철자를 입력 ( 단어를 알겠으면 그것을 말해도 OK ) : ")
for i in range(0,words) :
if ( answer == WORD ) :
total = words
chance_int = 8
elif ( answer == b[i] ) :
if ( a[i] != answer ) :
a[i] = answer
total = total + 1
if ( total == words ) :
chance_int = 8
else :
chance_int = chance_int + 1
else :
count = count - 1
if ( count == 0 ) :
chance_int = chance_int + 1
if ( total == words ) :
print("\n",WORD," 정답입니다!")
else :
print("\n기회가 전부 소진되었습니다!")
print("정답은",WORD,"였습니다!")
추가) 행맨 이라는 게임의 코드입니다
답변 1
단어 할당 및 선택은 아래처럼 간단하게 줄일 수 있겠네요. 할당 방식은 다양하지만요.
data = {4: ['prey', 'send', 'aqua', 'holy', 'corn', 'loot'],
5: ['color', 'plain', 'zebra', 'drown', 'quest', 'paste'],
6: ['ground', 'creamy', 'hockey', 'freeze', 'mother', 'gentle'],
7: ['clarify', 'present', 'officer', 'kitchen', 'chicken', 'gamepad'],
8: ['backyard', 'hospital', 'kindread', 'treasure', 'keyboard', 'computer'],
9: ['unanimous', 'headphone', 'pineapple', 'undertale', 'guardians', 'minecraft'], # 마지막 콤마 있어도 할당되어서; 편해서;
}
:
WORD = random.choice(data[words]) # 4~9 외의 값에 대한 예외 처리까지 해주면 더 좋겠죠?
기회가 8번인데, 예를 들어 단어가 prey라고 했을 때, 한 글자씩 입력해 맞춰도 계속 반복하는 문제가 있군요.
어쨌거나 단어 출력 부분, 정답 확인 부분 등의 코드도 간단하게 줄일 수 있겠습니다. 생략해도 되겠죠?