【问题标题】: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)
          

          (顺便说一句,我也是初学者)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-12-09
            • 2014-06-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-13
            • 2019-04-20
            相关资源
            最近更新 更多