in语句只对python中的列表工作一次
我正在制作一个简单的基于文本的刽子手游戏,我想检查一个用户输入的字母是否是一个列表的一部分,该列表包含了用户应该猜测的单词的字符 以下是该部分代码:in语句只对python中的列表工作一次,python,python-2.7,Python,Python 2.7,我正在制作一个简单的基于文本的刽子手游戏,我想检查一个用户输入的字母是否是一个列表的一部分,该列表包含了用户应该猜测的单词的字符 以下是该部分代码: while True: print "Guess a letter / The word (%d attempts remaining.)" % attempts guess = raw_input() if len(guess) == 1: if guess in chars: blankslist[chars.index
while True:
print "Guess a letter / The word (%d attempts remaining.)" % attempts
guess = raw_input()
if len(guess) == 1:
if guess in chars:
blankslist[chars.index(guess) * 2] = guess
blanks = "".join(str(x) for x in blankslist)
print blanks
else:
print "Nope!"
attempts -= 1
if attempts <= 0:
print "Game Over! The word was %s" % chosen_word
break
elif len(guess) == len(chosen_word):
if guess == chosen_word:
print "Congrats, you won with %d attempts left!" % attempts
else:
print 'Oh no, you lost... The correct word was "%s".' % chosen_word
break
else:
print("Input a single letter")
为True时:
打印“猜测字母/单词(%d次尝试剩余。)%”尝试次数
猜测=原始输入()
如果len(猜测)==1:
如果按字符猜测:
空白列表[字符索引(猜测)*2]=猜测
blanks=“”.连接(str(x)表示blankslist中的x)
打印空白
其他:
打印“不!”
尝试次数-=1
如果尝试.index(guess)
只返回它找到的第一个索引
您可以使用类似的方法获取所有索引:
positions = [i for i, char in enumerate(chars) if guess == char]
然后循环浏览此列表:
for p in positions:
blankslist[p * 2] = guess
你能在代码中添加for循环吗?在每个循环之后如何猜测和修改字符。index(guess)
返回该值的第一个索引,只需在列表中循环并替换所有出现的值。为什么blankslist
的长度是chars
的两倍?这是因为我的blankslist类似于\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(让用户了解单词有多少个字母)我必须将索引乘以2,这样它只能替换下划线而不是空格。这很有效,但是你能解释一下你添加的第一行代码是做什么的吗?作为一个初学者,我不能完全理解它。@J.C.理解列表理解的有用资源:还有帮助(枚举)
将解释这一点part@J.C.enumerate将列表中的每个元素转换为一个元组,第0个元素i
作为索引,第一个元素char
作为原始元素。您可以在不理解列表的情况下将其重写为positions=[]
/对于i,枚举中的char(chars):
/如果guess==char:
/位置。附加(i)