Créer image PGM
Résolu
bendrop
Messages postés
12724
Date d'inscription
Statut
Contributeur
Dernière intervention
-
bendrop Messages postés 12724 Date d'inscription Statut Contributeur Dernière intervention -
bendrop Messages postés 12724 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Créer image PGM
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer une image iso - Guide
- Créer un lien pour partager des photos - Guide
- Comment créer un compte gmail - Guide
2 réponses
Re bonjour bendrop,
Voici comment j'aurais écrit ton programme (et là, le résultat est correct) :
Je te laisse comparer le résultat obtenu avec les deux programmes pour comprendre où est ton erreur.
Bonne chance
Voici comment j'aurais écrit ton programme (et là, le résultat est correct) :
#!/usr/bin/env python3 import sys def write_pgm(filename, w=800, h=800, n=255): with open(filename, "w") as f: print( "\n".join([ "P2", " ".join([str(w), str(h)]), str(n), "\n".join( " ".join( str((i ** 2 + j ** 2) % n) for j in range(w) ) for i in range(h) ) ]), file=f ) write_pgm("resultat.pgm")
Je te laisse comparer le résultat obtenu avec les deux programmes pour comprendre où est ton erreur.
Bonne chance
Bonjour,
Si tu ouvres ton fichier, tu comprendras le problème ;
Par ailleurs, tu peux améliorer ton programme comme suit
Le fichier devient exploitable avec la première correction, mais même si le rendu ressemble à ce que tu attends, ce n'est pas le résultat que tu attends. Vérifie qu'il y a le bon nombre de valeurs pour chaque ligne.
Bonne chance
Si tu ouvres ton fichier, tu comprendras le problème ;
- Il manque des espaces entre les valeurs assignées à chacun de tes pixels.
Par ailleurs, tu peux améliorer ton programme comme suit
- Pour ouvrir et fermer le fichier, il vaudrait mieux utiliser un context manager (en python :
with open("resultat.pgm") as f:
) - Pour écrire dans ton fichier, tu peux directement utiliser ton descripteur de fichier avec
print
:print("plop", file=f)
). Il est possible d'omettre le retour chariot en cas de besoin (print("plop", end="")
).
Le fichier devient exploitable avec la première correction, mais même si le rendu ressemble à ce que tu attends, ce n'est pas le résultat que tu attends. Vérifie qu'il y a le bon nombre de valeurs pour chaque ligne.
Bonne chance
Je regarderai cela de près.
Cordialement.