我正在尝试使用for
循环打印来自两个不同用户输入的常用字母。 (我需要使用for循环来完成它。)我遇到了两个问题:1。我的语句“如果char不在输出中......”并没有提取唯一值。输出给出了一个单独的字母列表而不是单个字符串。我尝试拆分输出,但拆分遇到类型错误。
wrd = 'one'
sec_wrd = 'toe'
def unique_letters(x):
output =[]
for char in x:
if char not in output and char != " ":
output.append(char)
return output
final_output = (unique_letters(wrd) + unique_letters(sec_wrd))
print(sorted(final_output))
答案 0 :(得分:4)
您正在尝试执行Set Intersection。 Python有set.intersection
方法。您可以将它用作您的用例:
>>> word_1 = 'one'
>>> word_2 = 'toe'
# v join the intersection of `set`s to get back the string
# v v No need to type-cast it to `set`.
# v v Python takes care of it
>>> ''.join(set(word_1).intersection(word_2))
'oe'
set
将返回字符串中的唯一字符。 set.intersection
方法将返回两个集合中共有的字符。
如果您必须使用for
循环,那么您可以使用 list comprehension :
>>> unique_1 = [w for w in set(word_1) if w in word_2]
# OR
# >>> unique_2 = [w for w in set(word_2) if w in word_1]
>>> ''.join(unique_1) # Or, ''.join(unique_2)
'oe'
使用显式for
循环也可以实现上述结果:
my_str = ''
for w in set(word_1):
if w in word_2:
my_str += w
# where `my_str` will hold `'oe'`
答案 1 :(得分:3)
对于这类问题,你可能最好使用套装:
wrd = 'one'
sec_wrd = 'toe'
wrd = set(wrd)
sec_wrd = set(sec_wrd)
print(''.join(sorted(wrd.intersection(sec_wrd))))
答案 2 :(得分:0)
解决问题的功能
def find_common_characters(msg1,msg2):
#to remove duplication set() is used.
set1=set(msg1)
set2=set(msg2)
remove={" "}
#if you wish to exclude space
set3=(set1&set2)-remove
msg=''.join(set3)
return msg
提供输入并调用函数 为msg1,msg2提供不同的值并测试您的程序
msg1="python"
msg2="Python"
common_characters=find_common_characters(msg1,msg2)
print(common_characters)