如何用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
相关产品推荐
相关产品推荐

