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.htmlBienvenue 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