有两个长度一样的字符串,输出这两个字符串中位置相同且字母相同的数量a以及字母相同但位置不同的数量b,注意排除那些位置正确的字母。比如“answers”和“peelers”,最后三个字母都是“ers”所以a=3,“peel”和“answ”中没有相同的字母,所以b=0。“abcda”和“baaab”中a=0,两个a和一个b的位置错误了所以b=3。
以下有更多例子
“failed”,“banana”
a=1,b=0
“answers”,“bananas”
a=1,b=2
“answers”,“startle”
a=0,b=4
“answers”,“andoras”
a=3,b=1
写了一个,不过楼上的更简便,这个供参考
string1 = 'abcdefg'
string2 = 'mncfgh'
a = 0
b = 0
dic_a = {}
dic_b = {}
### 比较相同位置的字符
for i in range(min(len(string1),len(string2))):
if(string1[i] == string2[i]):
print(string1[i])
a += 1
print(a)
### 比较不同位置的字符
print(string1,string2)
### 分别把string1和string2 存到两个字典中
keya = dic_a.keys()
keyb = dic_b.keys()
for key in string1:
print(key)
if key not in keya:
dic_a[key] = 1
else:
dic_a[key] += 1
for key in string2:
if key not in keyb:
dic_b[key] = 1
else:
dic_b[key] += 1
### 比较字典,取key值相同时候的小值
if len(keya) > len(keyb):
key0 = keyb
else:
key0 = keya
for k in key0:
if(k in keya and k in keyb):
b = b + min(dic_a[k],dic_b[k])
print(b)
循环两个字符串比较各个字符即可
你题目的解答代码如下:
s1 = input("请输入第一个字符串:")
s2 = input("请输入第二个字符串:")
li1 = []
li2 = []
a = 0
b = 0
for c1,c2 in zip(s1,s2):
if c1==c2:
a += 1
else:
li1.append(c1)
li2.append(c2)
for v in li1:
if v in li2:
b += 1
li2.remove(v)
print(f'a={a},b={b}')
如有帮助,望采纳!谢谢!