【问题标题】:Print only vowels in a string仅打印字符串中的元音
【发布时间】:2017-01-18 11:09:28
【问题描述】:
我是 Python 新手,我正在尝试在一个字符串中打印所有元音。因此,如果有人输入“嘿,一切都好吗?” , 所有的元音都需要打印...但我不知道怎么做? (所以不是计算元音,而是打印元音)
现在我已经有了这个;
sentence = input('Enter your sentence: ' )
if 'a,e,i,o,u' in sentence:
print(???)
else:
print("empty")
【问题讨论】:
标签:
python
string
python-3.x
printing
【解决方案1】:
这样的?
sentence = input('Enter your sentence: ' )
for letter in sentence:
if letter in 'aeiou':
print(letter)
【解决方案2】:
如果您想打印所有句子中出现的元音,这两个答案都很好——所以“Hello World”会打印两次'o',等等。
如果您只关心 distinct 元音,则可以改为循环遍历元音。从某种意义上说,您正在翻转其他答案建议的代码:
sentence = input('Enter your sentence: ')
for vowel in 'aeiou':
if vowel in sentence:
print(vowel)
所以,“嘿,一切都好吗?”会打印
a e i
相对于:
e e e e e i a i
同样的想法,但遵循 Jim 将列表解析解包为 print 的方法:
print(*[v for v in 'aeiou' if v in sentence])
【解决方案3】:
向print 提供一个列表推导并解压:
>>> s = "Hey there, everything allright?" # received from input
>>> print(*[i for i in s if i in 'aeiou'])
e e e e e i a i
这会列出所有元音,并通过解包 * 将其作为位置参数提供给 print 调用。
如果您需要不同的元音,只需提供一组理解:
print(*{i for i in s if i in 'aeiou'}) # prints i e a
如果您需要添加打印的else子句,请预先构建列表并根据它是否为空来处理它:
r = [i for i in s if i in 'aeiou']
if r:
print(*r)
else:
print("empty")
【解决方案4】:
你总是可以使用 RegEx:
import re
sentence = input("Enter your sentence: ")
vowels = re.findall("[aeiou]",sentence.lower())
if len(vowels) == 0:
for i in vowels:
print(i)
else:
print("Empty")
【解决方案5】:
你总是可以这样做:
vowels = ['a', 'e', 'i', 'o', 'u', 'y']
characters_input = input('Type a sentence: ')
input_list = list(characters_input)
vowels_list = []
for x in input_list:
if x.lower() in vowels:
vowels_list.append(x)
vowels_string = ''.join(vowels_list)
print(vowels_string)
(顺便说一句,我也是初学者)