Pourquoi main() empêche-t-il les calculs de s'effectuer ?
Résolu
getudir78
Messages postés
36
Statut
Membre
-
getudir78 Messages postés 36 Statut Membre -
getudir78 Messages postés 36 Statut Membre -
Bonjour,
Je débute en Python : J'ai téléchargé Anaconda 3 et Pycharm, que j'ai configurés tant bien que mal.
Je ne suis pas très à l'aise.
Le script avec ce main ci-après s'exécute sans erreur mais n'affiche aucun résultat.
Le même script sans main calcule et affiche les résultats sans problème.
Pouvez-vous m'aider à en comprendre les raisons ?
Par avance, merci
Je débute en Python : J'ai téléchargé Anaconda 3 et Pycharm, que j'ai configurés tant bien que mal.
Je ne suis pas très à l'aise.
Le script avec ce main ci-après s'exécute sans erreur mais n'affiche aucun résultat.
# -*- coding: utf-8 -*-
import numpy as np
import scipy as sp
if __name__== "__main__":
def main():
x = 4 + 3
# Python de base
print('résultat addition = ' + str(int(x)))
print('pi de numpy = ' + str(np.pi))
# import de numpy
print('cos(pi) de numpy = ' + str(np.cos(np.pi)))
# import de scipy
print("pi/2 de scipy = %s" % str(sp.pi/2.))
zero = 0
print("cos(pi/2) de scipy : le %d mathématique devient %s" % (zero , str(sp.cos(np.pi/2.))))
Le même script sans main calcule et affiche les résultats sans problème.
# -*- coding: utf-8 -*-
import numpy as np
import scipy as sp
x = 4 + 3
# Python de base
print("a")
print("résultat addition = {}".format(x))
print("pi de numpy = {}".format(np.pi))
print("z")
# import de numpy
print("cos(pi) de numpy = {} ".format(str(np.cos(np.pi))))
# import de scipy
print("pi/2 de scipy = %s" % (str(sp.pi/2.)))
zero = 0
print("cos(pi/2) de scipy : le %d mathématique devient %s" % (zero , str(sp.cos(np.pi/2.))))
Pouvez-vous m'aider à en comprendre les raisons ?
Par avance, merci
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
2 réponses
-
'lut,
même sans l'indentation (que le forum retire car tu n'as pas utilisé les balises de code), le problème est assez évident:
tu fais bien leif __name__== "__main__":
typique mais tu définis une fonctionmain
dedans sans jamais l'appeler.main
n'a aucune signification particulière en Python contrairement au C, C++ ou Java.
3 solutions:- retirer la fonction main intégralement et mettre son code dans le corps du
if __name__== "__main__":
- laisser la fonction où elle est mais l’appeler après (peu recommandé, mauvais style):
if __name__== "__main__": def main(): ... main()- sortir la fonction du
if
, la mettre avant, et l'appeler dans leif
(préférable)
def main(): ... if __name__== "__main__": main()
-
Grand merci, ElementW.
J'ai implanté la solution 3 et effectivement, le problème est résolu : les calculs s'effectuent et s'affichent. Cela m'encourage à poursuivre mes premiers pas en Python.
Il faudra que je m'interesse "aux balises" et que comprenne plus finement comment travaille main en Python.
Merci aussi au site "commentcamarche.net", d'avoir mis en place ce forum .
- retirer la fonction main intégralement et mettre son code dans le corps du
-