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: ceci me donne la sortie: p> Je ne peux pas comprendre comment obtenir comment obtenir chacun? J'ai pensé à utiliser J'apprécierais toute aide. P> P> str.split () code> mais je ne pensais pas que cela fonctionnerait correctement. p>
5 Réponses :
retour code> quitte la fonction, vous devez donc créer une liste et continuer à y ajouter:
97 98 99
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.
Vous pouvez soit P> retour code> est uniquement appelé une seule fois dans une fonction.
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)
Alec, peu plus lent que moi ... :-)
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]
Vous pouvez simplement faire cela:
def get_ords(s): return ' '.join([str(ord(ch)) for ch in s])
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