функция дает неправильный результат

Рейтинг: 1Ответов: 1Опубликовано: 01.03.2023

Есть код, в нем есть две функции, одна берез случайное слово из списка, вторая переводит данное слово по словарю (перевод в азбуку Морзе). все это работает в опроснике (типа учебная программа для обучения азбуке Морзе). Я не могу понять где совершил ошибку, и почему всегда неправильный ответ, даже если по факту он правильный.

Код:

import random

morse_encode = {"0": "-----", "1": ".----", "3": "...--", "2": "..---","4": "....-",
"5": ".....","6": "-....","7": "--...","8": "---..","9": "----.","a": ".-",
"b": "-...","c": "-.-.","d": "-..","e": ".","f": "..-.","g": "--.","h": "....",
"i": "..", "j": ".---","k": "-.-","l": ".-..","m": "--","n": "-.","o": "---",
"p": ".--.","q": "--.-","r": ".-.","s": "...","t": "-","u": "..-","v": "...-",
"w": ".--","x": "-..-","y": "-.--","z": "--..", ".": ".-.-.-",",": "--..--",
"?": "..--..","!": "-.-.--", "-": "-....-", "/": "-..-.", "@": ".--.-.",
 "(": "-.--.",")": "-.--.-"}
words = ["code", "bit", "list", "soul", "next"]
answers_count = 1
answers = []
right_answers = []

def get_random_word():
    """
    Получает случайное слово
    из списка слов
    """
    word = random.sample(words, k=1)
    return "".join(word)

def morse_func(word):
    """
    переводит слова на английском языке
    в последовательности точек и тирe
    """
    mors_answer = []
    for i in word:
        for key, value in morse_encode.items():
            if key == i:
                mors_answer.append("".join(value))
    return " ".join(mors_answer)

input("Сегодня мы потренируемся расшифровывать морзянку.\n"
"Нажмите Enter и начнем")

while answers_count <=5:
    answer = input(f"Слово {answers_count}: {morse_func(get_random_word())} :")
    if answer == morse_func(get_random_word()):
        print("Верно")
        right_answers.append(answer)
    else:
        print("Неверно")
        answers.append(answer)
    answers_count += 1

Ответы

▲ 1

вы дважды обращаетесь к get_random_word(), соответственно получаете разные случайные значения и их (эти разные значения) сравниваете. возьмите его только раз

while answers_count <=5:
    word = get_random_word()
    answer = input(f"Слово {answers_count}: {morse_func(word)} :")
    if answer == morse_func(word):
        print("Верно")
        right_answers.append(answer)
    else:
        print("Неверно")
        answers.append(answer)
    answers_count += 1