目标是编写一个代码,删除用户输入的字符串中的所有元音;我的代码不打印没有元音的最终new_inp字符串。似乎new_inp = inp.replace(ch,“”)行没有做任何事情。任何人?谢谢。
inp="je m'en fou!"
vocals=['a','e','i','o','u']
for ch in inp.lower():
if ch in vocals:
new_inp=inp.replace(ch,"")
print (new_inp)
答案 0 :(得分:2)
你走了:
inp="je m'en fou!"
vocals=['a','e','i','o','u']
for ch in inp.lower():
if ch in vocals:
inp=inp.replace(ch,"")
print (inp)
您使用原始字符串覆盖了循环的每次迭代,而不是累积更改。
答案 1 :(得分:1)
您需要在一个字符串中累积所有更新。您当前的方法仅替换初始字符串并丢弃下一次迭代中的先前更新:
new_inp = inp
for ch in inp.lower():
if ch in vocals:
new_inp = new_inp.replace(ch,"")
print(new_inp)
您可以使用以下生成器表达式来过滤掉非元音项目:
new_inp = ''.join(x for x in inp if x not in vocals)
答案 2 :(得分:1)
您可以使用re
模块。
import re
inp="je m'en fou!"
re.sub('[aeiou]', '', inp)
输出:
"j m'n f!"
答案 3 :(得分:0)
这是一种方法:
inp="je m'en fou!"
vocals='aeiou'
new_inp = ''.join(letter for letter in inp if letter not in vocals)
print(new_inp) # j m'n f!
你的方法的问题是你在循环的每次迭代中都从原始字符串开始。
答案 4 :(得分:0)
覆盖inp变量。
inp="je m'en fou!"
vocals=['a','e','i','o','u']
for ch in inp.lower():
if ch in vocals:
inp=inp.replace(ch,'')
print (inp)