【问题标题】:Python beginner here : TypeError: 'str' object does not support item assignmentPython初学者在这里:TypeError:'str'对象不支持项目分配
【发布时间】:2018-03-01 17:17:36
【问题描述】:

几天前我刚开始使用 python 编程,之前没有编程经验。

我一直在关注在线教程,并决定通过制作一个刽子手式游戏来挑战自己。我正在尝试这样做,以便猜测替换隐藏单词中字母的位置,但 python 正在返回此错误。现在这个词叫做name,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)

感谢您帮助这个新手 :)

【问题讨论】:

标签: python


【解决方案1】:

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

hidden_name[i] = c

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

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

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

【讨论】:

    【解决方案2】:

    python 中的字符串是不可变的,所以你不能改变它的内容。 一种解决方案是拆分字符串,更改字母并将其粘在一起:

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

    【讨论】:

    • 谢谢大家,我想我现在明白了。所以字符串是不可变的,但列表是不可变的。所以我可以将单词更改为列表(然后替换该字符),或者将字符拆分并插入字符串?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    相关资源
    最近更新 更多