返回列表中 true/false 的错误值

Returning wrong values of true/false in list

问题

WRITE 代码检查 'N' 英文单词列表是否可以仅使用键盘的一行来书写。如果是这种情况,请制作一个包含 'True' 或 'False' 选项的列表。

输入:

第一行必须读取 'N' 的值。 第二行开始读 'N' 字

示例:如果 N = 3 的值,则英语单词列表为 [POTTER, EQUITY, LIRIL] 则输出为 [True, True, False]

我的代码

N=int(input("enter number of elements: "))
words=input("enter the words separated by a space: ")
wl=words.split()
print("list of words is" , wl)
l2=[]
final=[]
a=['q','w','e','r','t','y','u','i','o','p']
if N<0:
    print("Invalid Input")
else:
    for i in range(0,N):
        ele=wl[i]
        l2.append(ele)
        new=ele.split()
        if new <=a:
            re1='True'
            final.append(re1)
        else:
            re2='False'
            final.append(re2)
    print(final)

最终列表显示真实,即使使用了键盘其他行的字母。谁能指出我的错误所在并帮助我修复此代码?

您的键盘上有 3 行字母

row1="QWERTYUIOP"
row2="ASDFGHJKL"
row3="ZXCVBNM"

虽然第 3 行不会产生任何单词,因为它没有元音字母,但您仍然需要检查第二行是否有 GLAD、FLAG、HALL 等单词

对于每个单词,如果所有字母都在同一行,则可以将其写在一行中:

if all(letter in row1 for letter in word) \
or all(letter in row1 for letter in word):

有了这个,您应该能够通过遍历单词列表来填充最终结果(无需为索引而烦恼)。

for word in wl:
    if all(letter in row1 for letter in word.upper()) \
    or all(letter in row2 for letter in word.upper()):
       final.append(True)
    else:
       final.append(False)