.join() 使用不当还是有其他错误? (蟒蛇)

时间:2021-04-19 04:54:28

标签: python list

我正在尝试为猜词游戏构建一个函数,其中猜出的字母将与尚未猜出的字母的空格一起显示。在下面的代码中,我得到了类型错误,它表示猜测的字母,一个字符串,不能在列表中连接。这是因为 .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()

1 个答案:

答案 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$