0
votes

Python for-boucle ne va pas itérer le premier personnage passé dans la chaîne

Ma fonction Python est censée prendre une entrée une chaîne (de lettres uniquement et uniquement des lettres minuscules). La fonction devrait générer true s'il n'y a pas de lettres répétitives (quels que soient leurs lettres consécutives ou non) et que c'est supposé renvoyer false s'il y a des lettres répétitives. Mon code ne vérifie que si la première lettre est répétée ou non, mais ne vérifie aucune autre lettre de la chaîne. Quelle est la solution?

 mon code


0 commentaires

4 Réponses :


1
votes

Essayez ceci xxx

vous souhaitez retourner true uniquement si vous passez via tout le pour la boucle


2 commentaires

Cela a fonctionné avec votre code! Merci beaucoup. Donc, la déclaration d'autre dans mon code initial a fait passer par une itération?


Excecidant, dans la première itération, par défaut, il retournerait toujours true , puis il quitterait la fonction.



0
votes

Les suivants doivent rectifier.

def is_isogram(s: str):

    # loop through all unique chars
    for x in set(s):
        if s.count(x) > 1:
            return True

    # terminate after looping through all chars
    return False


0 commentaires

0
votes

Vous ne passez pas le premier caractère au-delà du premier caractère car dans la première itération de la boucle de la boucle, votre «d'autre» quitte la fonction si la déclaration IF renvoie false.


1 commentaires

Merci pour votre réponse, mais la chose est quand j'ai entré "Deff", il est toujours retourné vrai bien que la première lettre ne soit pas répétée. Je pense donc que cela fonctionne toujours simplement une itération, que la première itération soit fausse ou vraie.



0
votes

Ma solution

def is_isogram(x): 
    if len(str(x)) > len(set(x)): 
        return False 
    else: 
        return True


0 commentaires