为什么我只打印列表中每个项目的第一个字母?

时间:2016-10-06 00:36:20

标签: python

我想知道为什么我只打印我输入的每个项目的第一个字母。我希望它循环遍历列表并打印以first_letters变量中的一个字母开头的每个项目。

phrase = input('Enter a list: ')
first_letters = ['A','B','C','D']
for name in phrase:
    if name[0] in first_letters: 
        print(name)

#['Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot']

3 个答案:

答案 0 :(得分:0)

如果这是Python3,那么您输入的列表实际上不是列表而是字符串。所以当你打电话时,

for name in phrase:

你正在调用该字符串中的每个字母。因此变量name实际上是一个字母,因此name[0]等于name

答案 1 :(得分:0)

将您的输入视为:

Alpha, Bravo, Charlie, Delta, Echo, Foxtrot

这使得处理您的输入变得复杂。因为你现在必须处理每个单词之间的空格和逗号。

输入用户输入后,处理所有空格,然后使用split实际获取条目列表。所以:

phrase = input('Enter a list: ').replace(' ', '').split(',')

短语现在将是一个类似于以下内容的列表:

['Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot']

可能更容易处理空格分隔列表,如:

Alpha Bravo Charlie Delta Echo Foxtrot

然后,您可以在没有split()方法的情况下调用replace,并使用其默认的分割空间:

phrase = input('Enter a list: ').split()

现在您正在遍历列表,现在可以使用first_letters列表检查每个单词的第一个字母。

为了确保始终与完全相同的大小写进行比较,请确保为列表中的每次迭代调用upper(),以便与列表中的相同大小写进行比较:

phrase = input('Enter a list: ').replace(' ', '').split(',')
first_letters = ['A','B','C','D']
for name in phrase:
    if name[0].upper() in first_letters:
        print(name)

输出:

Alpha
Bravo
Charlie
Delta

答案 2 :(得分:0)

输入Alpha,Bravo,Charlie,Delta,Echo,Foxtrot

如果您在输入的每个名称后输入逗号,请使用.split(','),如果您只是在名称之间使用空格,请使用.split()

.split()查找空格并在空格后分割用户输入,.split(',')查找逗号并在找到逗号后拆分用户输入。

phrase = input('Enter a list: ').split(',')
first_letters = ['A','B','C','D']
for name in phrase:
   if name[0].upper() in first_letters:
      print(name)

查看名称列表

print(phrase) 

使用.split()或.split(',')

后,它会以列表形式显示名称

['Alpha','Bravo','Charlie','Delta','Echo','Foxtrot']

<强>输出:

Alpha
Bravo
Charlie
Delta

如果您想使用正确的名称,即使使用小写字母也可以使用此代码

phrase = input('Enter a list: ').split(',')
first_letters = ['A','B','C','D','a','b','c','d']
for name in phrase:
   if name[0] in first_letters:
      print(name)

输入Alpha,Bravo,Charlie,Delta,Echo,Foxtrot,alpha,bravo,charlie,delta,echo,foxtrot

<强>输出:

Alpha
Bravo
Charlie
Delta
alpha
bravo
charlie
delta