You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS50P作业:移除元音的基础for循环失效原因咨询

问题:移除文本元音的代码为何无效?

我正在学习CS50P课程,这是我的第一门Python课程。在Problem Set 2中有一道移除给定文本中元音的题目。我尝试编写了如下代码:

Vowels = ["A", "a", "E", "e", "U", "u", "O", "o", "I", "i"]
inputs = input("input: ")
outputs = inputs
for x in Vowels:
    outputs.replace(x, "")
print(f"output: {outputs}")

但这段代码无法正常运行。我已经用其他方法解决了该问题,但好奇第一次尝试失败的原因。


你这段代码失效的核心原因是Python字符串是不可变类型。

Python里的字符串一旦创建就没法直接修改内容,str.replace()方法不会改动原字符串,而是返回一个完成替换操作的新字符串。你现在的代码里,每次调用replace()后都没把返回的新字符串重新赋值给outputs,所以outputs自始至终都是最初的inputs,自然没有任何变化。

只需要把循环里的语句改成下面这样,问题就解决了:

outputs = outputs.replace(x, "")

每次替换后都将新字符串存回outputs,循环结束后就能得到移除所有元音的结果。

内容的提问来源于stack exchange,提问作者Ahmed 606777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:50:18