我刚刚开始使用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)
感谢您帮助这位新手:)
答案 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)