簡體   English   中英

如何從帶有特定項目的輸入中打印列表

[英]How to print list from input with specific items

如何從特定項目的輸入中打印列表? 例如,名稱以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: 
>>>

您的問題是namex是布爾值 ,而不是字符串

>>> '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)
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']

在這里,我將所有以“ 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"):

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM