строковый метод не работает, даже если я передаю его параметру python

#python #string #replace

Вопрос:

Здравствуйте, я программист на 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'))  

Я объявил функцию, которая удаляет гласные из строки, я искал ее проблемы, но ничего не смог найти, я даже передал возвращаемое значение функции замены в строку, а затем передал ее. В чем проблема с моим кодом ? спасибо за ваши ответы

Ответ №1:

is используется для сравнения идентификаторов. В вашем случае не обязательно, чтобы n и «a» имели одинаковую ячейку памяти. Вы можете изменить его на == для сравнения ЗНАЧЕНИЙ. Если значение n равно «a», то n==»a» должно вернуться True . is вернется True , когда местоположение обоих будет одинаковым. Он вернется False , даже если значение правильное. Или вы in также можете использовать. in вернет 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'))  

Ответ №2:

попробуйте это:

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

Ответ №3:

 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' , вам не нужно использовать все операторы или.

Комментарии:

1. большое спасибо, но почему мой код не сработал?

2. Это из-за вашего заявления «если». Ваша версия будет выглядеть так — gt; если n = = » a «или n = =» e «или n = =» i «или n = =» o «или n = = «u»: …