while turn < 10:
letter = str(input("Enter your guess: "))
if letter in randomword:
pos = randomword.find(letter)
word = word.replace(word[pos],letter,1)
print(word)
word
是类似于"_ _ _ _ "
的字符串。
为什么在此循环中,当字母位于随机单词中时,它会打印在开头而不是位置word[pos]
上?
答案 0 :(得分:1)
在此代码的情况下,第一个参数replace
所要替换的子字符串是word[pos]
上的哪个字符。然后,它将替换该字符的第一次出现,该字符将出现在字符串的开头。您将必须使用word[pos] = letter
来更改pos
处的字符。
编辑:对不起,我认为这是可能的,但事实并非如此。有效的方法是使用字符串切片,并且比转换为字符列表要快。在这种情况下,代码将为word = word[:pos] + letter + word[pos+1:]
顺便说一句,here已经回答了
答案 1 :(得分:0)
Python字符串为immutable。因此,您首先需要将其转换为字符列表,然后在其中更改字符并将其转换回字符串:
turn = 0
randomword = 'Testword'
word = ''.join('_'*len(randomword))
while turn < 10:
letter = str(input("Enter your guess: "))
if letter in randomword:
pos = randomword.find(letter)
char_list = list(word)
char_list[pos] = letter
word = ''.join(char_list)
print(word)