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

如何用for循环实现两字符串公共字符去重提取并输出为字符串?

如何从两个字符串中提取唯一的公共字母

嘿,我来帮你搞定这两个问题!先上能直接跑的正确代码,再给你拆解为啥之前的写法出问题:

# 获取用户输入的两个字符串
str1 = input("请输入第一个字符串:")
str2 = input("请输入第二个字符串:")

output = []
# 遍历第一个字符串的每一个字符
for char in str1:
    # 关键:同时满足「字符在第二个字符串里」+「还没被加入结果列表」
    if char in str2 and char not in output:
        output.append(char)

# 把列表转成字符串用join,别用split!
final_result = ''.join(output)
print(final_result)

测试输入one和toe,输出就是eo,完全符合你的预期~

问题1:if char not in output...无法实现去重?

大概率是你没把两个条件结合起来!比如之前可能只判断了char not in output,但没确认这个字符确实存在于第二个字符串里;或者条件顺序不对?

一定要同时检查两个核心条件:字符必须是两个字符串共有的,而且还没被添加到结果列表中。这样才能保证每个公共字母只被加入一次,实现去重效果。

问题2:输出是单个字母的列表而非字符串,split报错?

split()是用来把字符串拆分成列表的方法,反过来把列表拼接成完整字符串得用''.join(你的列表)——这个方法会把列表里的每个字符无缝拼接成一个字符串。

你之前用split报错,是因为split是字符串的专属方法,列表没有这个属性,自然会抛出类型错误啦。

额外小提示

如果想要结果按字母顺序排列(比如输入one和toe也能输出排序后的eo),可以把最后一行改成:

final_result = ''.join(sorted(output))

这样不管遍历顺序如何,结果都会是按字母排序的字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:30:51