Comment puis-je distribuer la sortie d'une liste que j'ai faite en python dans mon bloc-notes

Nov 20 2020

J'essayais de résoudre un problème qui se passait car mon IDE ne pouvait pas conserver une séquence de nombres à cause de la fonction de plage qui fonctionne comme tel.

Et j'ai fait une question précédente à ce sujet, c'est donc une suite à la question. Voici mon commentaire de liste sur la question précédente.

J'ai en fait fait quelques ajustements en ajoutant une ligne; 'My_list = list (range (100)) avant d'appliquer votre code pour que cela fonctionne réellement. Mais il combine les réponses sans virgules, par exemple 10 fait ceci «0123456789» au lieu de «0,1,2,3,4,5, ..... 8,9». Aucune suggestion?

J'ai décidé de publier cette question pour ne pas permettre à l'autre question de sortir de son contexte (comme on me l'a conseillé).

Aucune suggestion?

Réponses

JorgeGuimaraes Nov 22 2020 at 15:58

Vous devez comprendre le fonctionnement des chaînes en Python.

Les chaînes sont des constantes (littérales) conservées dans un compartiment fermé. Dans les documents officiels, vous pouvez trouver que "les chaînes sont des séquences immuables de points de code Unicode".

Mais les programmeurs doivent modifier ou manipuler le texte de manière programmable. Dans votre cas, vous voulez:

"[x1] [espace] [virgule] [x2] [virgule] ... [xn] [espace] [virgule]" où "xn" est un nombre et "," est une constante.

Pour y parvenir, de manière programmable, les programmeurs peuvent utiliser des «masques» pour indiquer au logiciel où ils souhaitent placer leurs modifications. On peut utiliser des opérateurs de format de chaîne :

"%d , %f" %(my_first_integer, my_float)
[0][1][2][3][4][\0]
# Hey Python, return a string, using the above template, 
# but place useful stuff where you find magic keywords.

Ce qui signifie:

  • Créez une séquence de 6 positions;
  • Dans [0], placez my_integer de type intconverti en chr;
  • Dans [1], copiez "";
  • Dans [2], copiez ",".
  • Dans [3], copiez "";
  • Dans [4], placez my_float de type floatconverti en chr;
  • Dans [5], placez "\ 0" pour que la chaîne soit terminée. (Placé automatiquement en Python)

Il existe d'autres façons de le faire, c'est-à-dire que l'objet string a une méthode pratique appelée formatpour gérer cette construction:

my_integer = 2
my_string = "{0}*pi = {1}".format(my_integer, my_integer*3.14)
print(my_string)

# 2*pi = 6.28

Le programmeur obtiendra le même résultat final en utilisant l'une ou l'autre startegy.

En Python, ainsi que dans d'autres langages, on peut combiner des chaînes, concaténer, obtenir des sous-chaînes et ainsi de suite, en utilisant des méthodes et / ou des opérateurs spécifiques.

Afin de conserver la lisibilité, vous voudrez peut-être (je suppose) placer chaque valeur sur une ligne. Dans les chaînes, vous pouvez utiliser des caractères spéciaux comme \npour les nouvelles lignes .

my_list = list(range(100))

# ... useful code here and there ...

with open("output.txt", "w") as o:
    o.write("My list:\n")
    o.write("\tSize: {0}\n\n".format(len(my_list)))
    o.write("\t----start----\n")
    for i in range(len(my_list)):
        o.write("%d\n" % my_list[i])
    o.write("\n\t----end----\n")

# That writes:
# My list:
#     Size: 100
#
#     ----start----
# 0
# 1
# 2
# 3
...
# 99
#
#    ----end----

N'oubliez pas que ce n'est pas un guide complet, mais un guide profane. Je saute beaucoup de mots ennuyeux et de détails techniques que vous trouverez mieux dans les livres et cours Python.

molfo Nov 20 2020 at 19:57

Il vous suffit d'insérer une virgule après l'impression de chaque numéro:

my_list = list(range(100))

with open("output.txt", "w") as o:
    for i in range(len(my_list)):
        o.write("%d," % my_list[i]) # Here, after '%d' you can place a comma, or any text you want