Python 所以我';I’’我试图找到一种方法来替换字符串中的项目,但似乎失败了

Python 所以我';I’’我试图找到一种方法来替换字符串中的项目,但似乎失败了,python,list,indexing,ipython,Python,List,Indexing,Ipython,我有一张清单: 视觉=[''''''''''''''''''''''''''''''''''''''''''] 用户输入一个随机字母来查找结束词(游戏是hangman)我有办法打印出来,但它看起来像这样: _ o _ 而我希望它看起来像这样: _o_ 或: [“o”,“o”,“o”] 我不介意哪一个更喜欢第一个 到目前为止,我有: visuals = ['_ ', '_ ', '_ '] userInput = input("Enter a letter to guess: ") index

我有一张清单: 视觉=[''''''''''''''''''''''''''''''''''''''''''] 用户输入一个随机字母来查找结束词(游戏是hangman)我有办法打印出来,但它看起来像这样:

_

o

_

而我希望它看起来像这样: _o_ 或: [“o”,“o”,“o”] 我不介意哪一个更喜欢第一个

到目前为止,我有:

visuals = ['_ ', '_ ', '_ ']

userInput = input("Enter a letter to guess: ")

index = 0

for ch in hangmanWord:

    index += 1

    if ch == userInput:

        visuals = [w.replace([index], userInput) for w in visuals]

        print(visuals)
但最后一行似乎不起作用(我认为这是替换行),它只是得出以下结论:

   ['_ ', '_ ', '_ ']
我希望用用户输入替换下划线


抱歉这么长。非常感谢您的帮助

index+=1
移动到
if
语句之后,以使替换从0开始


对于替换程序,只需使用
visual[index]=userInput
。它将根据索引编辑
可视化

此脚本解决了此问题

>>> hangmanWord = "hello"
>>> visuals = ['_'] *len(hangmanWord)
>>> ended = False
>>> while not ended:
...     userInput = raw_input("Enter a letter to guess: ")
...     for idx,ch in enumerate(hangmanWord):
...         if userInput == hangmanWord[idx]:
...             visuals[idx] = userInput
...     print visuals
...     ended = '_' not in visuals
... 
Enter a letter to guess: a
['_', '_', '_', '_', '_']
Enter a letter to guess: h
['h', '_', '_', '_', '_']
Enter a letter to guess: e
['h', 'e', '_', '_', '_']
Enter a letter to guess: l
['h', 'e', 'l', 'l', '_']
Enter a letter to guess: o
['h', 'e', 'l', 'l', 'o']

join
str
的方法如何?
[在视觉效果中为v打印(v,end='')
?aa并且您破坏了格式。join只是在末尾添加用户输入,而不是替换它。如果你知道用什么方法来做的话,这可能就是我现在做的方式join@user2829759您的方法只是在末尾添加用户输入,而不是替换下划线:除非我弄糟了