Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 15, 2022 11:45:27

anotcher
Зарегистрирован: 2022-03-28
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Решаю задачу "Угадайка слов"

Решаю задачу по мотивам курса от “STEPIK”. Не могу понять как сделать возможность замены символа “*”, на соответствующую букву. Игра “Виселеца”.

  import random
# список слов для загадывания
word_list = ['mama', 'papa', 'brat', 'sestra'] # список слов для игры
# загадываем слово
def get_word(word_list):
    return random.choice(word_list).upper()
# функция получения текущего состояния игры
def display_hangman(tries):
    stages = [  # финальное состояние: голова, торс, обе руки, обе ноги
                '''
                   --------
                   |      |
                   |      O
                   |     \\|/
                   |      |
                   |     / \\
                   |
                   |
                   -
                ''',
                # голова, торс, обе руки, одна нога
                '''
                   --------
                   |      |
                   |      O
                   |     \\|/
                   |      |
                   |     / 
                   |
                   |
                   -
                ''',
                # голова, торс, обе руки
                '''
                   --------
                   |      |
                   |      O
                   |     \\|/
                   |      |
                   |
                   |
                   |      
                   -
                ''',
                # голова, торс и одна рука
                '''
                   --------
                   |      |
                   |      O
                   |     \\|
                   |      |
                   |
                   |
                   |     
                   -
                ''',
                # голова и торс
                '''
                   --------
                   |      |
                   |      O
                   |      |
                   |      |
                   |
                   |
                   |     
                   -
                ''',
                # голова
                '''
                   --------
                   |      |
                   |      O
                   |    
                   |      
                   |
                   |
                   |     
                   -
                ''',
                # начальное состояние
                '''
                   --------
                   |      |
                   |      
                   |    
                   |      
                   |
                   |
                   |     
                   -
                '''
    ]
    return stages[tries]
# основная логика игры
def play(word):
    # начальные данные
    word_completion = '*' * len(word)  # строка содержащая символы * на каждую букву задуманного слова
    guessed_words = []    # список уже названых букв
    quessed_letters = []  # список названых слов
    tries = 6             # количество попыток
    # начальные этап игры
    print('Давайте играть в угадайку слов.')
    print('У вас будет 6 попыток.')
    print(display_hangman(tries))
    print('Загаданное слово:', word_completion)
    # запрашиваем букву или слово
    while tries !=0:
        # проверяем что введены именно буквенные символы
        quessed = input('Назовите букву или слово целиком: ').upper()
        if not quessed.isalpha():
            print('Только букву или слово целиком')
        # если уже называли такую букву
        elif quessed in guessed_words:
            print('Вы уже называли такую букву.')
            #continue
        # если уже называли такое слово
        elif quessed in quessed_letters:
            print('Вы уже называли такое слово.')
            #continue
        # проверяем наличие буквы в загаданном слове
        elif quessed.isalpha():
            if len(quessed) == 1:                   # если введена 1 буква
                if quessed in word:                 # и если она присутствует в слове
                    guessed_words.append(quessed)   # добавляем в список ранее введенных
                    print('Есть такая буква в этом слове')
                    continue
                else:
                    tries -= 1  # сокращаем количество попыток на 1
                    guessed_words.append(quessed)
                    print('Такой буквы в слове нет')
                    print(display_hangman(tries))
                    print('Осталось попыток:', tries)
                    if tries == 0:
                        print('Вы не смогли угадать слово:', word)
                        break
            elif len(quessed) > 1:
                if quessed != word:
                    tries -= 1
                    print(display_hangman(tries))
                    quessed_letters.append(quessed)  #  заносим слово в список слов
                    print('Неверно осталось попыток:', tries)
                    print(word_completion)
                    if tries == 0:
                        print('Вы не смогли угадать слово:', word)
                        break
            # если угадали слово
                elif quessed == word:
                    print('Поздравляем, вы угадали слово!')
                    break
play(get_word(word_list)

Офлайн

#2 Апрель 15, 2022 13:03:10

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1393
Репутация: +  124  -
Профиль   Отправить e-mail  

Решаю задачу "Угадайка слов"

 word = 'помидор'
hidden = ['*'] * len(word)
while True:
    a = input('>')
    for i in range(len(word)):
        if a == word[i]:
            hidden[i] = a
    print(''.join(hidden))

Офлайн

#3 Апрель 15, 2022 13:36:02

anotcher
Зарегистрирован: 2022-03-28
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Решаю задачу "Угадайка слов"

xam1816
Спасибо большое, уже реализовал так же циклом, только со срезами…Но, все равно спасибо за помощь)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version