我知道有几种方法可以删除元音,但是当我尝试下面的方法时,我得到的输出是刚刚打印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语句。
答案 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:
简而言之,总是为真;你的程序认为一切都是元音。