본문 바로가기

Python 연습문제

Lv3. 단어 맞추기 게임

사실 이번문제는 내 힘으로 풀지는 못했으나

 

이런 저런 검색과 도움을 통해 해결 하는 법을 배웠다고 생각하기로 했다.

 

물론 나중에는 모두 이해하고 작성할 날이 오길 바라며

 

첫 접근은 단어를 랜덤으로 선택한뒤 각 단어의 알파벳 자리를 생성해서 포함하면 표시하고 포함 안하면 블랭크 하는 식으로 접근 했는데 구현 방법을 도저히 모르겠어서 포기

 

def word_game(word):
    choicelist=random.choice(word)
    print(list(choicelist))
    print(f'해당 단어는 {len(choicelist)}자리 입니다')
    x = input('알파벳을 하나 선택해주세요')
    for i in range(0,9):                            #9번의 기회를 주기 위해 9번의 for 반복을 돌린다
        print(f'기회는 {9-i}번 입니다.')
        if x in list(choicelist):                   #입력한 알파벳이 포함된 위치의 리스트 값을 출력한다를 하고 싶은데
            for add in range(0:len(choicelist))
                list(choicelist)[1]
                list(choicelist)[1]
                list(choicelist)[1]

 

두번째는 chatgpt에게 물어보고 직접 타이핑을 해보았다.

 

내가 모른는 개념인 while 문, join 문 등을 익혀야 겠다.

 

import random

word=[
    "airplane",
    "apple",
    "arm",
    "bakery",
    "banana",
    "bank",
    "bean",
    "belt",
    "bicycle",
    "biography",
    "blackboard",
    "boat",
    "bowl",
    "broccoli",
    "bus",
    "car",
    "carrot",
    "chair",
    "cherry",
    "cinema",
    "class",
    "classroom",
    "cloud",
    "coat",
    "cucumber",
    "desk",
    "dictionary",
    "dress",
    "ear",
    "eye",
    "fog",
    "foot",
    "fork",
    "fruits",
    "hail",
    "hand",
    "head",
    "helicopter",
    "hospital",
    "ice",
    "jacket",
    "kettle",
    "knife",
    "leg",
    "lettuce",
    "library",
    "magazine",
    "mango",
    "melon",
    "motorcycle",
    "mouth",
    "newspaper",
    "nose",
    "notebook",
    "novel",
    "onion",
    "orange",
    "peach",
    "pharmacy",
    "pineapple",
    "plate",
    "pot",
    "potato",
    "rain",
    "shirt",
    "shoe",
    "shop",
    "sink",
    "skateboard",
    "ski",
    "skirt",
    "sky",
    "snow",
    "sock",
    "spinach",
    "spoon",
    "stationary",
    "stomach",
    "strawberry",
    "student",
    "sun",
    "supermarket",
    "sweater",
    "teacher",
    "thunderstorm",
    "tomato",
    "trousers",
    "truck",
    "vegetables",
    "vehicles",
    "watermelon",
    "wind"
]

def choose_word():
    return random.choice(word)

def display_progress(word, guesses):
    display=''.join([letter if letter in guesses else '_' for letter in word])
    return display

def hangman():
    word=choose_word()
    guessed_letters=set()
    attempts=9

    print('영어 단어 맞추기 게임에 오신 것을 환영 합니다.')
    print(f'단어는 {len(word)}글자로 이루어져 있습니다.')
    print(display_progress(word, guessed_letters))

    while attempts > 0:
        guess=input("알파벳을 입력하세요")

        if len(guess) != 1 or not guess.isalpha():
            print('잘못된 입력입니다. 한개의 알파벳을 입력하세요.')
            continue

        if guess in guessed_letters:
            print('이미 입력한 알파벳입니다. 다른 알파벳을 입력하세요.')
            continue

        guessed_letters.add(guess)

        if guess in word:
            print("정답입니다")

        else:
            attempts-=1
            print(f'틀렸습니다. 남은 기회 {attempts}')

        current_progress=display_progress(word, guessed_letters)
        print(current_progress)

        if '_' not in current_progress:
            print('축하합니다. 단어를 맞추셨습니다')
            break
    else:
      print(f'아쉽습니다. 정답은 {word}였습니다')

if __name__=='__main__':
    hangman()


hangman()