我想打印出字符串中以a或A开头的所有单词。
但是,这只是打印所有元素。我该怎么解决?
我做了以下事情:
string1= input("Enter a string: ")
words= string1.split()
for word in words:
if(word[0]=='a' or 'A'):
print(word)
这将打印所有元素,而不是仅打印以a或A开头的字母。
答案 0 :(得分:1)
string1= input("Enter a string: ")
words= string1.split()
for word in words:
if(word[0]=='a' or word[0] == 'A'):
print(word)
您完成了word[0] == 'a' or 'A'
,该操作始终评估为true。
您甚至可以像这样使用列表理解:
a_words = [word for word in words if word[0] =='a' or word[0] == 'A']
答案 1 :(得分:1)
您可以这样做:
string1= input("Enter a string: ")
words= string1.split()
for word in words:
if(word[0] in ['a', 'A']):
print(word)
或使用更短的if语句:
if(word[0] in 'aA'):
答案 2 :(得分:0)
您的测试书写不正确。现在看起来像这样:
if(word[0]=='a' or 'A'):
print(word)
但是由于'A'不为null,因此循环基本上是:
if(word[0]=='a' or True):
print(word)
它将始终输入,因为anything or True
为True。
您真正想要的是对a
和A
进行测试,如下所示:
if(word[0]=='a' or word[0]=='A'):
print(word)
答案 3 :(得分:0)
在这里,我修复了
string1= input("Enter a string: ")
words= string1.split()
for word in words:
if(word[0]=='a' or word[0]=='A'):
print(word)
当你这样写的时候
if(word[0]=='a' or 'A'):
python分别评估word[0]=='a'
和'A'
,其中'A'
隐式转换为true。因此,您的情况永远都是正确的。
答案 4 :(得分:0)
尝试一下:
>>> string= input("Enter a string: ")
Enter a string: a world of an Apple
>>> string
'a world of an Apple'
>>> words_starts_with_a_or_A = [word for word in string.split() if word.lower().startswith('a')]
>>> words_starts_with_a_or_A
['a', 'an', 'Apple']
答案 5 :(得分:0)
使用操作in
:
s = input("Enter a string: ")
words = s.split()
for word in words:
if word[0] in 'Aa':
print(word)
使用函数any()
与发电机理解,并且该方法startswith()
:
s = input("Enter a string: ")
words = s.split()
for word in words:
if any(word.startswith(i) for i in 'Aa'):
print(word)
或与一个比较操作符:
s = input("Enter a string: ")
words = s.split()
for word in words:
if any(word[0] == i for i in 'Aa'):
print(word)