如何替换字符串中指定位置(索引)的字符?

时间:2020-08-25 18:59:57

标签: python loops

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]上?

2 个答案:

答案 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)
相关问题