본문 바로가기
프로그램

[파이썬] 문제 : 숫자 업다운 게임에서 숫자를 알파벳으로 지정하기

by 오디세이99 2023. 1. 5.
728x90
반응형

(문제)

파이썬 숫자 업다운 게임에서 숫자를 영어로 바꾸고 싶은데 어디가 잘못된지 봐주실 수 있을까요?

예를 들어 랜덤으로 d라는 임의의 알파벳이 지정되었을 때 a를 입력하면 업, e를 입력하면 다운으로 뜨는 그런 프로그램을 만들고 싶어요
숫자 순서대로 영어를 대입하는 코드를 넣었는데도 오류가 떠서 어떻게 해야하는지 모르겠습니다
아래 제가 쓴 코드 첨부 하겠습니다
import random

print ("알파벳 업 다운 게임 입니다~!")
print ("a 부터 z 사이의 알파벳이 랜덤으로 표시 됩니다. 맞춰보시오")


a = random.randint(1,25)
c = 0

diction= {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j', 10: 'k', 11: 'l', 12: 'm', 13: 'n', 14: 'o', 15: 'p', 16: 'q', 17: 'r', 18: 's', 19: 't', 20: 'u', 21: 'v', 22: 'w', 23: 'x', 24: 'y', 25: 'z'}
num=int(input(''))
for s in range(num):
    print(diction[s],end=' ')
  

while 1:

    b = int(input("입력 하세요:"))

    if b == a:
        print("정답 입니다. 총 ",c," 번 만에 맞추셨습니다. 게임을 종료합니다.")
        break

   elif b > a:
        print("다운!")
        c += 1
   elif b < a:
        print("업!")
        c += 1

 

 

(방법)

diction의 구조를 변경. 알파벳이 key가 되록 함.

그래야 알파벳 입력을 숫자로 찾을 수 있음.

b = int(input("입력 하세요:")) 에서 알파벳을 입력 받을 것이기 때문에 int 를 제거 하야 함.

그리고 입력 밧을 알파벳을 숫자로 찾아야 하기 때문에 b = diction[n]으로 함(n은 입력 받은 알파벳)

diction 딕셔너리 만드는 것으로 일일이 지정하지 않고, for문으로 만들었습니다.

import random

print ("알파벳 업 다운 게임 입니다~!")
print ("a 부터 z 사이의 알파벳이 랜덤으로 표시 됩니다. 맞춰보시오")


a = random.randint(1,25)
c = 0

# diction= {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j', 10: 'k', 11: 'l', 12: 'm', 13: 'n', 14: 'o', 15: 'p', 16: 'q', 17: 'r', 18: 's', 19: 't', 20: 'u', 21: 'v', 22: 'w', 23: 'x', 24: 'y', 25: 'z'}
diction = {}                       # diction= {'a':0, 'b':1...와 같이 알파벳이 key가 되도록 함
for i in range(97, 123):          # ord('a') = 97, ord('z') = 122
    diction[chr(i)] = i-ord('a')   # a=97. a 가 0 이 되도록 i-ord('a')를 함

# num=int(input(''))
# n=input('')
# num = diction[n]
# for s in range(num):
#     print(diction[s],end=' ')

while 1:
    # b = int(input("입력 하세요:"))
    n = input("입력 하세요:")
    b = diction[n]
    # print(a, b)      # 디깅용
    if b == a:
        print("정답 입니다. 총 ",c," 번 만에 맞추셨습니다. 게임을 종료합니다.")
        break
    elif b > a:
        print("다운!")
        c += 1
    elif b < a:
        print("업!")
        c += 1
728x90
반응형

댓글