Проблема здесь в том, что random_int
является, как определено, случайная. В результате вы случайно получите правильный результат.
Быстрое исправление с помощью метода tuple.index
, получить индекс элемента внутри кортежа Words
, а затем использовать этот индекс на Hints
, чтобы получить соответствующее слово, ваш оператор печати выглядит как:
print(new_word,"\t\t\t",Hints[Words.index(secret_word)])
Это делает трюк, но неуклюж. Python имеет структуру данных, называемую словарем, с помощью которой вы можете сопоставить одно значение с другим. Это может сделать вашу жизнь проще в долгосрочной перспективе. Для создания словаря из двух кортежей мы можем zip
их вместе:
mapping = dict(zip(Words, Hints))
и создать структуру, которая выглядит следующим образом:
{'canine': "Man's best friend", 'wallet': 'Portable money holder'}
Это помогает.
Еще одна деталь, которую вы можете исправить, заключается в том, как вы создаете new_word
; вместо зацикливания вы можете использовать понимание, чтобы создать соответствующие буквы, а затем join
их на пустой строке ""
, чтобы создать результирующую строку:
new_word = "".join("_" if letter in vowels else letter for letter in secret_word)
с точно таким же эффектом. Теперь, поскольку у вас также есть словарь mapping
, получить соответствующий совет легко, просто поставьте ключ new_word
на номер mapping
, и он вернет ключ.
Пересмотренный вариант кода выглядит следующим образом:
import random
Words = ("wallet", "canine")
Hints = ("Portable money holder", "Man's best friend")
mapping = dict(zip(Words, Hints))
vowels = "aeiouy"
secret_word = random.choice(Words)
new_word = "".join("_" if letter in vowels else letter for letter in secret_word)
print(new_word,"\t\t\t", d[secret_word])