Python元音ch

2024-04-26 06:03:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道有几种方法可以去除元音,但是当我尝试下面的方法时,得到的结果是字符串被打印了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语句。你知道吗


Tags: orand方法字符串inforstringlen
3条回答

您错误地使用了or语句:

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)

你需要把你完整的评估陈述放在手术室后面

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

试试这个:

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

问题是你的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:

简而言之,这总是正确的;你的程序认为所有的东西都是元音。你知道吗

相关问题 更多 >