在 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.
中的三元运算符完成
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.
中的三元运算符完成