如何使用特定项目从输入打印列表

时间:2015-07-01 04:42:26

标签: python list input append

如何使用特定项目的输入打印列表?例如,名称以x结尾。 我有这个代码

while True:
    name = input("Enter your name: ")
    if name == "":
        break
    list = []
    namex = name.endswith("x")
    if name == namex:
        list.append(name)
    print (list)

但是当我尝试打印列表时,它什么也没给我:

>>> Enter your name: alex
    Enter your name: james
    Enter your name: abcx
    Enter your name: 
>>>

3 个答案:

答案 0 :(得分:3)

您的问题是,namex是boolean,而不是string

>>> 'abc'.endswith("x")
False
>>> 'abcx'.endswith("x")
True

这意味着字符串和布尔值之间的任何相等比较都将返回false。如果语句以“x”结尾,或者:

,则需要触发“if”语句
names = []
while True:
    name = input("Enter your name: ")
    if name == "":
        break
    namex = name.endswith("x")
    # namex is a boolean type, which if it is True, will trigger an if statement
    if namex:
        names.append(name)
print(names)

答案 1 :(得分:2)

namex = name.endswith("x")
if name == namex:

不按照您的想法行事。 name.endswith("x")会返回TrueFalse。应该是

if name.endswith("x"):

代替。

names = []
while True:
    name = input("Enter your name: ")
    if name == "":
        break
    if name.endswith("x"):
        names.append(name)
print (names)

列表理解iter版本:

>>> [name for name in iter(input, '') if name.endswith('x')]
dsf
sdfdsf
dsffdx
sx

['dsffdx', 'sx']

答案 2 :(得分:1)

在这里,我存储了以' x'结尾的所有名称。在namex_list中,而不是使用之前使用的list(也是内置变量)变量。

另外,我将namex_list分配为while条件之前的空列表,并在namex_list之外的末尾打印while

namex_list = []
while True:
    name = input("Enter your name: ")
    if name == "":
        break     
    if name.endswith("x"):
        namex_list.append(name)
print (namex_list)

此外,由于字符串值与布尔值之间的比较,name == namex不会检查您要实现的目标。

例如:

>>> name1 = 'abc'
>>> name2 = 'abcx'
>>> namex1 = name1.endswith('x')
>>> namex2 = name2.endswith('x')

>>> namex1
False
>>> namex2
True

>>> name1 == namex1    
False
>>> name2 == namex2
False

您应该使用if来实现您在上面的代码中尝试实现的目标:

if name.endswith("x"):