[사전캠프 TIL]#9 간단 퀴즈

테리·2025년 10월 17일
post-thumbnail

1. 학습 내용

1. 랜덤 닉네임 생성기

import random

def make_nickname():
    a = ['기철초풍', '멋있는', '재미있는']
    b = ['도전적인', '노란색의', '바보같은']
    c = ['돌고래', '개발자', '오랑우탄']

    return random.choice(a) + ' ' + random.choice(b) + ' '  + random.choice(c)
    
my_nickname = make_nickname()
print(my_nickname)

2. 자판기

  1. 메뉴 표시
  2. 음료 선택(목록에 없는 경우 종료)
  3. 지불 금액 입력(부족한 경우 부족하다는 메시지)
  4. 잔액 확인
beverages = {'사이다': 1700,
             '콜라': 1900,
             '식혜': 2500,
             '솔의눈': 3000
             }

for k, v in beverages.items():
    print(f'{k}: {v:,}원') # 천단위 구분

choice = input('음료 선택: ')

if choice in beverages.keys():
    coin = int(input('금액을 입력해주세요: '))
    if coin >= beverages[choice]:
        change = coin - beverages[choice]
        print(f'{change:,}원')

    else:
        print('돈이 부족합니다.')

3. 단어 맞추기 게임

  1. 컴퓨터가 랜덤으로 영어단어를 선택합니다.
    a. 영어단어의 자리수를 알려줍니다.
    ex) PICTURE = 7자리

  2. 사용자는 A 부터 Z 까지의 알파벳 중에서 하나를 선택합니다.
    a. 맞출 경우 해당 알파벳이 들어간 자리를 전부 보여줍니다.
    b. 틀릴 경우 목숨이 하나 줄어듭니다.

  3. 사용자가 9번 틀리면 게임오버됩니다.

  4. 게임오버 되기 전에 영어단어의 모든 자리를 알아내면 플레이어의 승리입니다.

import random

words = ["airplane","apple","arm","bean","belt",
        "broccoli","bus","car","carrot","cloud",
        "coat","cucumber","desk","dictionary",
        "jacket","potato","rain","shirt","shoe"
     ]
pick = random.choice(words)
length = len(pick)
frame = ['_']*length
chance = 9
print(f'단어수: {length}')

while chance > 0:
    choice = input('알파벳 선택: ')
    chance -= 1
    for i in range(length):
        if choice == pick[i]:
            frame[i] = choice
    print(f'남은 기회: {chance}')
    print(''.join(frame)) # '': 빈 문자열을 사용하여 각 문자를 구분자 없이 붙여줌.

    if '_' not in frame:
        print('You Win!')
        break
    elif chance == 0:
        print('You Loss!')

2. 배운점 및 생각

  1. 닉네임 생성 퀴즈를 풀때 return에 띄어쓰기를 어떻게 넣을지 생각이 안났었다. 나중에 알고나서 허무했고 뭔가 복잡하게 생각했던 것 같다.
  2. 딕셔너리에서 .keys(), .values(), .items() 사용이 익숙하지 않았는데 다시 한 번 인지하게 됐고 천단위 구분을 숫자뒤에 :, 로 할 수 있다는 것을 알았다.
  3. join을 매번 쓸때마다 자꾸 생각이 잘 안난다. 특히나 맨 앞에 ' '.join 이 부분이 생각이 안나는데 더 익숙해져야 할 것 같다. 이 문제도 join을 생각했으면 조금 더 빨리 해결했을 것같다.

0개의 댓글