1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
import numpy as np
with open("test.txt",'r') as fic: # Très bien d'ouvrir les fichier comme ça!
content=fic.readline() # La tu accèdes à la première ligne, le nombre de sommet j'imagine.
b=int(content) # Pourquoi pas mais c'est pas très parlant 'b', pourquoi pas metre 'n_sommets' ou un nom plus parlant.
arrête=5 # Il faut pas l'imposer cette valeur, refai un int(fic.readline()), comme au dessus pour lire la ligne suivante. Pareil, il faudrait un nom plus parlant.
mat=np.zeros((b,b)) # Très bien, c'est propre cette ligne.
for i in range(arrête-1): # Heu, c'est bizarre là
mat[i,i]=0 # Pourquoi mettre des 0 là ou il y en à déjà?
c=list(fic.readlines()[5]) # Pourquoi se concentrer seulement sur la dernière arrête?
valeur='' # Quel est lintérêt de transformer une chaîne de caractère en liste, pour la retransformer en chaîne de caractère?
cmp=3
while c[cmp] != '\n': # J'ai l'impression qu'il y a une confusion entre les lignes du fichier et les mots dans une même ligne.
valeur+=c[cmp] # Attention, c'est pas une somme de nombre mais une somme de caractère qui est faite ici.
cmp+=1 # Les 5 dernières lignes sont équivalentes à valeur = c[3:-1] .
x=int(c[0]) # Vous ne récuperez pas le nombre mais le chiffre.
y=int(c[2]) # Pareille, ce que vous voulez sûrement faire, c'est y = int(c.split(" ")[1]), si vous n'aviez pas transformez la ligne en liste...
z=int(valeur) # De la même façon, on aurai z = int(c.split(" ")[2]).
mat[x,y]=z # Bien, mais vous ne traiter qu'une seule arrête, il faudrait tout mettre dans un for.
print (mat) # En principe il n'y a pas d'espace, mais c'est du détail. |
Partager