Comment puis-je distribuer la sortie d'une liste que j'ai faite en python dans mon bloc-notes
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
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
int
converti enchr
; - Dans [1], copiez "";
- Dans [2], copiez ",".
- Dans [3], copiez "";
- Dans [4], placez my_float de type
float
converti enchr
; - 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 format
pour 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 \n
pour 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.
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