我正在尝试为猜词游戏构建一个函数,其中猜出的字母将与尚未猜出的字母的空格一起显示。在下面的代码中,我得到了类型错误,它表示猜测的字母,一个字符串,不能在列表中连接。这是因为 .join() 使用不当吗?谢谢!
import random
Dictionary = {"fruits": "papaya", "buildings": "apartment", "mammal": "horse"}
def choose_word():
hint, chosen_word = random.choice(list(Dictionary.items()))
print("Hint: " + hint)
for letter in chosen_word:
blank = []
blank.append("_")
print("".join(blank), end="")
player_guess = input("\nPlease guess a letter between A-Z\n")
if player_guess in chosen_word:
letter = chosen_word.find(player_guess)
print("".join((blank)[:letter]+player_guess+blank[letter+1:]), end="")
choose_word()
答案 0 :(得分:0)
你有几个问题。您需要将 blank = []
移出循环,否则每次都会重置列表。您的第二个 join
调用不正确,但不是因为 join
,而是因为您在这里“添加”了三件事:列表、字符串和列表,这是不允许的。您可以通过列出猜测将它们全部变成列表:
print("".join(blank[:letter]+[player_guess]+blank[letter+1:]))
但这不是你真正想要的,是吗?你不想填写属性字母吗?这是播放一轮的代码。让它玩多轮取决于你。
import random
Dictionary = {"fruits": "papaya", "buildings": "apartment", "mammal": "horse"}
def choose_word():
hint, chosen_word = random.choice(list(Dictionary.items()))
print("Hint:", hint)
blank = []
for letter in chosen_word:
blank.append("_")
print(" ".join(blank), end="")
player_guess = input("\nPlease guess a letter between A-Z\n")
if player_guess in chosen_word:
letter = chosen_word.find(player_guess)
blank[letter] = player_guess
print(" ".join(blank))
choose_word()
输出:
timr@tims-gram:~/src$ python x.py
Hint: fruits
_ _ _ _ _ _
Please guess a letter between A-Z
a
_ a _ _ _ _
timr@tims-gram:~/src$