La comparaison des caractères dans les chaînes

Je suis en train de créer une fonction qui compare les caractères dans la même position des deux cordes de même longueur et retourne le nombre de leurs différences.

Par exemple,

a = "HORSE"
b = "TIGER"

Et il serait de retour 5 (comme tous les personnages dans la même position sont différents)

Voici ce que j'ai travaillé.

def Differences(one, two):
    difference = []
    for i in list(one):
        if list(one)[i] != list(two)[i]:
            difference = difference+1
    return difference

Qui donne une erreur "indices Liste doivent être des entiers non chaînes"

Et donc j'ai essayé de le tourner vers int en utilisant int(ord(

def Differences(one, two):
    difference = 0
    for i in list(one):
        if int(ord(list(one)[i])) != int(ord(list(two)[i])):
            difference = difference+1
    return difference

Qui renvoie également la même erreur.

Quand je liste d'impression(un)[1] != liste des(deux)[1] il eithers retourne True ou False, et que la comparaison est effectuée correctement.

Pouvez-vous me dire comment corriger mon code pour cela?

  • La raison pour laquelle vous obtenez des erreurs, c'est parce que vous êtes une itération sur la chaîne avec la boucle for. En Python, lorsque vous effectuer une itération sur quelque chose (et - en aparté - vous n'avez pas besoin de convertir des chaînes de listes; les chaînes sont iterables par la nature en python), vous obtenez chaque sous-élément de l'élément en question (par opposition à un numéro d'index). Donc, vous obtenez ["H","O","R","S","E"] que "je" valeurs en vous pour la boucle, qui ne sont évidemment pas des indices (c-à - 0,1,2,3,4).
InformationsquelleAutor Denis Moura | 2016-06-22