Python元音检查

时间:2017-06-09 19:01:48

标签: python python-3.x

我知道有几种方法可以删除元音,但是当我尝试下面的方法时,我得到的输出是刚刚打印len(string)次的字符串。例如:

s="Labido Labidi"
for i in s:
        if i.lower()=='a' or 'e' or 'i' or 'o' or 'u':    
            s=s.replace(i,"")
            print(s)

结果输出为:

Labido Labidi
Labido Labidi 
...and so on

循环中发生了什么?它甚至没有通过if语句。

3 个答案:

答案 0 :(得分:2)

您正在使用或声明错误:

s="Labido Labidi"
for i in s:
    if i.lower()=='a' or i.lower()=='e' or i.lower()=='i' or i.lower()=='o' or i.lower()=='u':    
        s=s.replace(i,"")
        print(s)

您需要在或

之后填写完整的评估声明

答案 1 :(得分:1)

问题是你的逻辑。 在第一个or之后,你必须重复i.lower() == 'e'等等。

试试这个:

s="Labido Labidi"
for i in s:
        if i.lower() in 'aeiou':    
            s=s.replace(i,"")
            print(s)

答案 2 :(得分:1)

问题在于if条件。 连接两个布尔表达式;它的工作原理与英语相同。您需要检查的是

if i.lower()=='a' or 
   i.lower()=='e' or
   ...

更好的是,只需用这种方式对元音列表进行单一检查:

if lower() in "aeiou":

详情

Any expression used as a Boolean value is evaluated according to whether it is "truthy" or "falsey".  Non-Boolean data types are sometimes not obvious.  In general, zero and `None` values are "falsey", and everything else is "truthy".

因此,每个单个字母都是" truthy",因此Python解释器会将您的if语句看作是

if i.lower()=='a' or True or True or True or True:

简而言之,总是为真;你的程序认为一切都是元音。