即使我将它传递给参数 python,字符串方法也不起作用

string method doesn't work even if I pass it to a parameter python

你好,我是一名 C# 程序员,但我认为学习 python 也很好,所以我正在学习 python 我有这段代码

def disemvowel(string_):
    for n in string_:
        if(n is 'a' or 'e' or 'u' or 'o' or 'i'):
            string_ = string_.replace('n' , '')
    return string_
print(disemvowel('Hello'))

我声明了一个从字符串中删除元音的函数我搜索了它的问题但我找不到任何东西我什至将替换函数的 return 值传递给字符串然后传递它我的代码是什么问题 ? 谢谢你的回答

def disemvowel(string_):
    for n in string_:
        if n in 'aeiouAEIOU':
            string_ = string_.replace(n, '')
    return string_

print(disemvowel('Hello')) 


Output: 'Hll'

如果您编写 if n in 'aeiouAEIOU',则不必使用所有的 or 运算符。

试试这个:

def disemvowel(string_):
    res = ''
    for n in string_:
        if n not in ['a' , 'e',  'u' ,'o' , 'i']:
            res += n
    return res
print(disemvowel('Hello'))

is用于比较ID。在您的情况下,n 和“a”不必具有相同的内存位置。您可以将其更改为 == 以比较值。如果 n 的值为“a”,则 n==“a”应该 return Trueis 将 return True 当两者的位置相同时。即使值正确,它也会 return False。或者您也可以使用 inin 将 return True 如果变量存在于字符串或可迭代数据类型中。您的代码将是:

  1. 使用 ==:
def disemvowel(string_):
    for n in string_:
        if n.lower()=="a" or n.lower()=="e" or n.lower()=="i" or n.lower()=="o" or n.lower()=="u":
            string_ = string_.replace(n,'')
    return string_
print(disemvowel('Hello'))
  1. 使用in
def disemvowel(string_):
    for n in string_:
        if n.lower() in ["a","e","i","o","u"]:
            string_ = string_.replace(n,'')
    return string_
print(disemvowel('Hello'))