0
votes

Comment obtenir ORD (Unicode) de chaque personnage de String?

J'essaie d'obtenir une fonction pour prendre une chaîne et imprimer chaque caractère de la chaîne de Unicode séparé par un espace. C'est tout ce que j'ai pu obtenir: xxx

ceci me donne la sortie: xxx

Je ne peux pas comprendre comment obtenir comment obtenir chacun? J'ai pensé à utiliser str.split () mais je ne pensais pas que cela fonctionnerait correctement.

J'apprécierais toute aide.


0 commentaires

5 Réponses :


3
votes

retour code> quitte la fonction, vous devez donc créer une liste et continuer à y ajouter:

97 98 99


5 commentaires

Merci pour cela. Je n'ai tout simplement pas appris à l'annexe et à l'adhésion à ce que ce soit encore dans ma classe, alors n'était donc pas sûr de la façon de faire cela.


@puppyonkik N'oubliez pas d'accepter et de voter si cela fonctionne :-)


Pourrait également imprimer ("" .join (Str (ord (ch)) pour ch in s))


@ U9-Forward désolé d'être une nuisance, une autre chose .. Comment puis-je obtenir la sortie pour être enveloppée dans des citations singulières afin que mon doctest passe? Mon professeur est cible à ce sujet. (par exemple, la sortie est '97 98 99 ')


@puppyonkik Vérifiez les deux premiers exemples, ils le font.



2
votes

retour code> est uniquement appelé une seule fois dans une fonction.

Vous pouvez soit P>

  1. Créez une variable locale qui stocke toute votre sortie, comme: LI> ol> xxx pré>
    1. Utilisez le rendement pour définir un générateur li> OL>
      def get_ords(s):
          """
          >>> get_ords('abc')
          '97 98 99 '
          >>> get_ords('a b c')
          '97 32 98 32 99 '
          """
          yield ord(ch)
      
      x = get_ords(s)
      
      for y in x:
          print(y)
      


1 commentaires

Alec, peu plus lent que moi ... :-)



1
votes

Bon moment pour apprendre les compréhensions. Ils sont tous deux plus courts à écrire et souvent plus efficaces que de la croissance de manière itérative d'un tableau:

def get_ords(s):
    """
    >>> get_ords('abc')
    '97 98 99 '
    >>> get_ords('a b c')
    '97 32 98 32 99 '
    """
    return ' '.[ord(c) for s in c]


0 commentaires

1
votes

Vous pouvez simplement faire cela:

def get_ords(s):
    return ' '.join([str(ord(ch)) for ch in s])


0 commentaires

1
votes

Comme déjà pointé, vous pouvez utiliser la compréhension de la liste pour cela. Comme il a déjà noté qu'un seul renvoi code> dans chaque exécution de fonction est exécuté, donc si vous souhaitez déclencher retourner plus d'une fois que vous devez organiser votre fonction de manière récursive:

def get_ords(s):
    if len(s)>=2:
        return f"{ord(s[0])} "+get_ords(s[1:])
    else:
        return f"{ord(s[0])}"
print(get_ords('abc')) # 97 98 99
print(get_ords('a b c')) # 97 32 98 32 99


0 commentaires