Questions sur Python

Résolu/Fermé
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 - 3 mai 2009 à 16:14
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 - 5 mai 2009 à 16:19
Bonjour à tous!

Je me suis mi à la découverte de python récement. (LE niveau et le language ressemble un peu à ce qu'on utilise à l'école).

J'ai commencé un petit programme (simple) qui convertit les valeurs entre différentes écchelles de température. On rentre les éccheles que l'on veut et la valeur. Ca marche bien.

Cependant, comme vous le savez (ou pas) les températures inférieures à -273.15°C (ou 0K) n'éxistent pas.

J'aimerais donc faire en sorte que le programme s'arrête net si l'utilisateur rentre une mauvaise valeur. En affichant un méssage.

J'ai pas trouvé comment faire. (j'ai testé "break", quit()... mais ce marche pas. Je dois faire un truc bien plus lourd pour que cela marche : je vous donne un extrait du code :
# -*- coding:Utf-8 -*-
l =["celcius","fahrenheit","kelvin"]
d = "degrés"
e = "degrés"
in_temp = raw_input("unité de départ (tapez «?» pour de l'aide) :")
if (in_temp == "?"):
    print "Les unités prises en charges sont", l[0],",", l[1],"et", l[2]
    in_temp = raw_input("unité de départ :")
out_temp = raw_input("unité de destination :")
t = input("valeur :")

(c'est le début : on entre les unitées de départ et de sortie ainsi que la valeur)

## conversion celcius >> xxx
if (in_temp == l[0]):
    if (t < -237.15):
        print "ERREUR : valeur de température en desous du zéro absolu!"
    elif (out_temp ==l[2]):
        e = ""
        s = t + 273.15
    elif (out_temp == l[1]):
        s = t*(9./5.)+32
    print t, d, in_temp, "=", s, e, out_temp

(ici on cherche si ce que l'utilisateur à entré "celcius". Ci oui, on entre dans la procédure. On vérifie si t < 273°C. si oui, la valeur est impossible, et on doit arrêter.
le problème c'est que alors, le programme laisse tomber les "elif" (normal) mais se rend au "print". Évidement, la température de sortie n'est pas ("s") n'est pas définissable.
Python me le dit avec une érreur...

J'aimerais que le programme s'arrête dés que le premier "if" est satisfait, sans regarder le "print" de la fin.
Savez comment faire?

merci à tous!

2 réponses

Bonjour,
Je ne suis pas sûr d'avoir compris ce que tu veux, mais si tu demande simplement comment quitter un programme "proprement" sans message d'erreur tu peux utiliser sys.

import sys

if (t < -237.15):
    sys.exit(0)
0
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 1 057
5 mai 2009 à 16:19
Ok! merci! Celà m'aidera :

Après de nombreuses temtatives, j'ai aussi trouvé de mettre un "print" en plus, et d'indenter chaque section.

mais meinteant, le programme s'arêtera directement, si la température n'est pas bonne^^ merci!


Euh... oserais-je te demander comment on fait pour vérifier si la valeur rentré est bien numérique? (de type float ou int).

J'ai éssayé avec
if type(t) != (float,int):
print "erreur"


mais le fait est que le "input" ne le permet pas... (Raw_input si, mais je dois alors rajouter t = float(t). Or si on rentre un texte dans la valeur de t, float(t) n'est pas définissable...

merci!
0