2013-09-29 1 views
-3

Je suis novice en ce qui concerne l'apprentissage de Python et l'utilisation d'Eclipse + PyDev. Je n'arrive pas à comprendre pourquoi mon programme ne fonctionne pas."main()" du programme Python ne s'exécute pas sur l'appel

Voici mon code:

def main(): 
    print("Testing") 
    test1 = float(input("Test1: ")) 
    test2 = float(input("Test2: ")) 
    test3 = float(input("Test3: ")) 
    calculate_cost (test1, test2, test3) 

def calculate_cost (test1, test2, test3): 
    print("Testing") 

Je suppose que je suis absent quelque chose dans l'un ou l'autre des fonctions pour faire de cette course correctement.

+7

Vous n'avez jamais appelé 'main()' dans votre code. –

Répondre

6

Ceci est Python, pas C/C++, main() n'est pas le point d'entrée de votre programme, vous devez appeler la fonction manuellement. Il suffit d'appeler cela:

# your code 
# ... 
main() 

Si vous voulez éviter que votre code est appelé lors de l'importation d'un autre endroit, vous souhaitez utiliser:

# your code 
# ... 
if __name__ == '__main__': 
    main() 

Cette question: What does if __name__ == “__main__”: do? explique ce dernier bloc.

+0

Il peut être utile de parler à * pourquoi * les gens font le bit '__name__ == '__main __'', donc ce n'est pas considéré comme une chose uniquement pour les bibliothèques. (Par exemple, être capable d'utiliser des outils d'analyse statique qui importent des modules pour les analyser). –

+0

Bien sûr Charles, en effet je cherchais une question SO qui l'explique. – jabaldonedo

+0

Oui, je me le demande aussi. – user1804933

3

Contrairement à d'autres langages, il n'y a pas d'application de la convention qu'une fonction main est appelée lors de l'exécution d'un programme. En Python, vous devrez le faire manuellement. Cela signifie que vous devrez mettre un main() au bas de votre script pour que votre fonction main s'exécute.

Un modèle commun est d'utiliser les éléments suivants:

if __name__ == '__main__`: 
    main() 

Cela exécutera la fonction main lorsque le script est exécuté directement, mais empêche son exécution lorsque le script est importé comme module ailleurs. Voir this question pour plus de détails sur cette partie.

+0

Génial merci je n'ai pas réalisé que c'était nécessaire. – user1804933

Questions connexes