J'ai résolu la partie logique de l'exercice suivant, mais je ne trouve pas une solution simple à produire dans le format requis. Cela ressemble à une liste dans une liste.
Description du problème: P>
écrire un programme qui prendra une série de chiffres et vous donnera tous les des tranches consécutives consécutives possibles N dans cette chaîne. P>
Soulevez une erreur si n est plus grand que la longueur de la chaîne. P>
Exemples par exemple, la chaîne "01234" a les 2 chiffres suivants tranches: p>
[[0, 1], [1, 2], [2, 3], [3, 4]] P>
La même chaîne a les tranches 4 chiffres suivantes: p>
[[0, 1, 2, 3], [1, 2, 3, 4]] P> blockQuote>
Ceci est mon code qui fonctionne bien, sauf la façon dont il renvoie la réponse est différent, vous ne pouvez donc pas le soumettre. p>
xxx pré> Ce code est imprimé < code> ['0123', '1234'] code>, qui est la bonne réponse, mais je le veux dans ce format:
[[0, 1, 2, 3], [1, 2, 3, 4]] code> p>
(édition) Ajouter cette ligne résolue mon problème suggéré par mkrieger1, merci Ceci est le code final:
DEF Series_Slices (chiffres, n): chiffres = [int (x) pour x en chiffres] résultat = [] Pour x dans la plage (0, len (chiffres) -N + 1): Résultat.Append (liste (chiffres (x: n])) n + = 1 Résultat de retour code> p> p>
3 Réponses :
Il suffit d'utiliser retourne p> et le convertir en entiers ( merci mkrieger, je n'avais pas lu la question avec précaution suffisamment: p> Vous pouvez utiliser ou utilisez une compréhension de liste: p> plus généralement, appliquer < Code> Liste Code> à tout ce qui est itérable retournera une liste de ses éléments. P> p> list code> sur vos chaînes:
mapper code>, qui ira déterrer sur les caractères de votre chaîne et renvoyer un entier pour chacun, puis Faites une liste de la liste de l'objet de la carte: p>
Liste ('0123') code> est
['0', '1', '2', '3'] code>. Besoin de convertir également en entiers.
changer votre code en
résultat = [] code>
et
résultat.Append (liste (chiffres (x: x])) code> dans la ligne 3 et la ligne 5. p>
vous c un fait avec une compréhension de la liste. Le premier niveau passe par la taille et le deuxième niveau prend les tranches de cette taille:
cherchez-vous
json.dump code> docs.python.org/ 3 / bibliothèque / json.html
Bienvenue dans le débordement de la pile! En ce qui concerne votre problème, à quel point la valeur de vos variables n'a-t-elle pas l'état souhaité? En d'autres termes, extraire un exemple de reproductible minimal ! En tant que note, Python connaît deux façons de "imprimer" un objet, l'un utilise la conversion vers une chaîne et l'autre via
REC () code> et de chaque classe "de celui-ci. Vérifiez les documents pour comprendre comment votre code fonctionne. En outre, en tant que nouvel utilisateur ici, prenez le tour et lisez Comment demander .
Vous devez convertir la chaîne d'entrée en une liste d'entiers au début:
chiffres = [int (x) pour x en chiffres] code>. Le reste du code devrait alors travailler inchangé.
Dupliqué possible de Comment scinder la chaîne sans Espaces dans la liste des entiers à Python?
@ mkrieger1 J'essaie ce que vous avez suggéré, mais je pense, convertissant la chaîne d'entrée en int () enlèverait la principale zéro dans la chaîne d'entrée. ne serait-ce pas?
Ce n'est pas "convertir la chaîne d'entrée en int ()" mais dans une liste d'entiers.
Non, ce ne serait pas, car il ne convertit pas la chaîne en un seul entier à la fois, mais convertit les caractères individuels.
@ mkrieger1 remerciement ami, chiffres = [int (x) pour x en chiffres] Cette ligne a résolu mon problème. & cette syntaxe de boucle en ligne est cool, j'ai besoin de le maîtriser