如何在Python 3中比较两个字符串中的单个字符

12
我尝试比较两个不同字符串的第一个字符(以此类推),并基于这些结果形成一个新字符串。下面是我所尝试使用的方法,但它会将每个列表元素相互比较。
def compare(a,b):
    s = ""
    for x in a:
        for y in b:
            if x == y:
                s+=str(x)
            else:
                s+=str(y)

这似乎是一个很简单的问题,但我却卡住了。


3
你所写的只是将y复制到s中。 你实际上想做什么? - Prune
你正在将一个字符串中的每个字符与另一个字符串中的每个字符进行比较,而不仅仅是相应的字符。 - Barmar
6个回答

17

使用zip:

def compare(a, b):
    for x, y in zip(a, b):
        if x == y:
            ...

4

你是否正在寻找与此类似的逻辑?它从每个输入字符串中选择字母表顺序较早的字符:

def compare(a,b):
    s = ""
    for i in range(len(a)):
        if a[i] < b[i]:
            s+=str(a[i])
        else:
            s+=str(b[i])
    return s

print compare ("seven", "eight")

输出:

eegen

这句话的简洁版是:
return ''.join(a[i] if a[i] < b[i] else b[i] for i in range(len(a)))

0
我们可以编写简单易懂的方法来比较两个字符串中相似的字母。
def compare(a,b):
    s = ""
    t=""
    for x in a:
        for y in b:
            if x == y:
                t=x
        s=s+t
    print(s)

compare("xyz","axy")

这里的第一个 for循环 将比较字符串中的每个字母并显示所有相似的字符。


0
def twoStrings(s1, s2):
for i in range(len(s1)):
    for j in range(len(s2)):
        if s2[j] == s1[i]:
            return 'YES'
return 'NO'

1
格式可以改进(returnfor关键字与def在同一列),并且最好在代码中添加一些解释。 - ValLeNain

0

这里是一个完整的函数

def compare_strings(a,b):
    result = True
    if len(a) != len(b): print('string lengths do not match!')
    for i,(x,y) in enumerate(zip(a,b)):
        if x != y:
            print(f'char miss-match {x,y} in element {i}')
            result = False
    if result: print('strings match!')
    return result

0
input(x)
input(y)
cnt = 0
 for char_val in x:
   if b[cnt] == char_val:
      print("match")
   else:
      print("mis-match")

2
请考虑添加至少一些解释,以说明为什么这个答案回答了问题。 - β.εηοιτ.βε

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接