Python初学者:TypeError:' str'对象不支持项目分配

时间:2018-03-01 09:11:14

标签: python

我刚刚开始使用python编程,没有任何编程经验。

我一直在网上关注教程,并决定通过制作一个刽子手式游戏挑战自己。我试图这样做,以便猜测替换隐藏单词中的字母位置,但python返回此错误。现在,这个词被称为名称,而hidden_​​name只是#相同的长度。

    name = input ("what is your name ::")
    hidden_name = ("#" * len(name))
    print (hidden_name)

    guess = input ("Guess a letter ::")
    def guess_update(guess, name, hidden_name):
        right = guess in name 
        i = 0
        for c in name:
            if c == guess:
                hidden_name[i] = c
            i += 1
    if guess in name:
        guess_update(guess, name, hidden_name)
        print ("Your progess is ::", hidden_name)

感谢您帮助这位新手:)

2 个答案:

答案 0 :(得分:4)

Python中的字符串是不可变的,所以你不能这样做:

hidden_name[i] = c

可以为您的游戏取得预期效果的一个选项是:

hidden_name = hidden_name[:i] + c + hidden_name[i+1:]

这是有效的,因为您正在使用连接创建新字符串,并将结果重新分配回变量,而不是尝试编辑现有字符串。

答案 1 :(得分:2)

python中的字符串是不可变的,因此您无法更改其内容。 一种解决方案是拆分字符串,更改字母并将其粘在一起:

splitted = list(hidden_name)
splitted[i] = c
hidden_name = ''.join(splitted)