我想知道为什么我只打印我输入的每个项目的第一个字母。我希望它循环遍历列表并打印以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']
答案 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