我正在编写一个与用户一起玩hangman的程序。目前,它有两个列表:一个列表包含该单词的可变版本,另一个列表包含用户猜测的“状态”。所以,如果单词是“python”:
word = ["p", "y", "t", "h", "o", "n"]
status = []
for number in range(0, len(word)):
status.append("_")
print(status)
>>> ["_", "_", "_", "_", "_", "_"]
我的计划是,在每个input("Enter guess: ")
后,我可以用猜测替换“_”,根据猜测在“单词”列表中的索引。 (这有意义吗?!)
然后,在每次猜测之后,我可以print("".join(status))
,以便用户可以看到他们的进展情况。
我做了一些研究并遇到了方法list.index(x)
,但我读到它返回了值为x的第一个项目的索引。
以下是我希望程序如何工作的示例:
word = ["p", "y", "t", "h", "o", "n"]
status = ["_", "_", "_", "_", "_", "_"]
Enter guess: t
_ _ t _ _ _
Enter guess: n
_ _ t _ _ n
等。等(不要担心循环等因为我有这个:)我只是不确定如何根据另一个的索引编辑一个列表!)
我不打算修改'word',所以最后我可以比较'status'和'word'来检查用户是否赢了,但我会接受所有的建议!! :d
谢谢!
答案 0 :(得分:0)
这应该有效:
word = ['p','y','t','h','o','n']
user_letter = raw_input("Enter a letter\n")
status = ['_' for i in xrange(len(word))]
for index, ltr in enumerate(word):
if ltr == user_letter:
status[index] = user_letter
这假设user_letter
的长度为1.当然,这是您可以自己确定的。
答案 1 :(得分:0)
您可以使用列表解析来获取值为x
的所有索引:
indices = [i for i, elem in enumerate(word) if elem == x]
所以你会:
>>> word = ["p", "y", "t", "h", "o", "n"]
status = ["_", "_", "_", "_", "_", "_"]
>>> >>> word
['p', 'y', 't', 'h', 'o', 'n']
>>> status
['_', '_', '_', '_', '_', '_']
然后,用户猜测,说我们有guess = 't'
,然后是:
>>> guess = 't'
>>> indices = [i for i, x in enumerate(word) if x == guess]
>>> indices
[2]
然后我们改变状态列表以显示找到的索引:
for i in indices:
status[i] = guess
然后我们可以将status
显示为字符串:
print(' '.join(status))
_ _ t _ _ _