在 if 语句中访问列表中元组的值

Accessing values of tuples inside lists in if statements

python 初学者。 According to this thread,,我学会了如何访问列表中元组的值。

这是上面线程中的答案:

[x[1] for x in L]

我这里有一个元组列表:

[('w', False), ('o', True), ('r', False), ('d', False)]

我想读取每个元组中的 True/False 值,如果值为假则打印下划线,如果值为真则打印字符。例如,在上面的列表中,由于 'o' 是 True 项,我想打印 _o__.

这是我到目前为止一直在尝试的,我觉得我的方向是正确的,但是既然我正在写这个帖子,它显然不起作用:

for char in word: #part i need help on
  if [x[1] for x in word] == True:
    print("_", end="")
  elif [x[1] for x in word] == False:
    print(word[char], end="")

如果需要更多信息,这是完整的代码(Hangman 游戏的开始,还有很长的路要走),但具体来说,我需要上述代码块的帮助:

randomword = "word" #will add random words when it works properly
word = [(char, False) for char in randomword] #splits randomword into list of tuples of different characters with a false value assigned because no letters have been guessed yet

def getLetter(): #letter guessing function, limits input to one character
    guess = input("Guess a letter: ")
    if len(guess) != 1 or (guess.isalpha()) == False:
        while len(guess) != 1 or (guess.isalpha()) == False: 
            print("Must be" + "3[96m one letter!" + "3[0m Try again.")
            guess = input("Guess a letter: ")
    return guess

guess = getLetter()

for char in range(word.__len__()):
  if word[char][0] == guess.lower():
    word[char] = (guess, True) #a correct guess changes the False to True
print(word) 

for char in word: #part i need help on
  if [x[1] for x in word] == True:
    print("_", end="")
  elif [x[1] for x in word] == False:
    print(word[char])

我会说你有点过于复杂了。而是尝试这样的事情。

lst = [('w', False), ('o', True), ('r', False), ('d', False)]
for tup in lst:
  if tup[1] == True:
      print(tup[0],end="")
  elif tup[1] == False:
    print('_', end="")

使用列表推导式可以这样完成:

word = [('w', False), ('o', True), ('r', False), ('d', False)]
new_word = [elements[0] if elements[1]==True else "_" for elements in word]
for element in new_word:
    print(element,end="")

这里逐个提取列表的元素,因为它是一个有两个元素的元组,所以检查第一个索引是真还是假,并根据分配的值是字符还是 _,这是使用 python.

中的三元运算符完成