Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/09/2020, à 13:00

chris7522

Try / Except ( Python)

Bonjour a tous et a tous ,
   Dans ce petit code , je ne comprend pas pourquoi mon exception ZeroDivisionError ne se leve pas lorsqu'il le faut .
  Par ailleurs j'aimerai pouvoir entrer un float sans avoir une ErreurValue .
Merci de votre aide .

  def division(a,b):
  return a /b

def verif():
  while True:
   try:
     valeur=input("Entrez une valeur : ")
     valeur=int(valeur)
   except ZeroDivisionError:
      print("Division par zero impossible !")
   except ValueError:
     print("Entrez une valeur correcte !")
   except NameError:
      print("Variable non définie !")
   else:
      break
  return valeur

print("-- Premier chiffre -- ")
nombre1=verif()
print("--  Deuxieme chiffre --")
 nombre2=verif()
resultat=division(nombre1,nombre2)
print("Le resultat de l'operation est :",resultat)   

Hors ligne

#2 Le 07/09/2020, à 13:33

kholo

Re : Try / Except ( Python)

salut,
alors, outre l'indentation et quelques manques d'espaces que j'ai arrangé ici vite fait :

#!/usr/bin/env python3
# -*- coding: UTF8 -*-
"""
module docstring
mé quéstufé ?

"""

__title__ = "mettre un titre"
__author__ = 't'es qui toi ?'
__license__ = 'cc'
__copyright__ = 'Creative Common 2018-2019'
__ver_major__ = 0
__ver_minor__ = 1
__ver_patch__ = 0
__ver_sub__ = ''
__version__ = "%d.%d.%d%s" % (__ver_major__, __ver_minor__,
                              __ver_patch__, __ver_sub__)


def division(a,b):
    return a /b

def verif():
    while True:
        try:
            valeur=input("Entrez une valeur : ")
            valeur=int(valeur)
        except ZeroDivisionError:
            print("Division par zero impossible !")
        except ValueError:
            print("Entrez une valeur correcte !")
        except NameError:
            print("Variable non définie !")
        else:
            break
    return valeur

if __name__ == "__main__":
    print("-- Premier chiffre -- ")
    nombre1 = verif()
    print("--  Deuxieme chiffre --")
    nombre2 = verif()
    resultat = division(nombre1,nombre2)
    print("Le resultat de l'operation est :",resultat) 

ta vérification test une division par 0 mais tu n'es pas encore dans le cadre de ta division puisque tu n'en es qu'à donner une valeur
donc logique que tu passe au travers du try / except ZeroDivisionError !
si tu veux faire ton test mets le devant ta division !! wink

Hors ligne

#3 Le 07/09/2020, à 14:20

chris7522

Re : Try / Except ( Python)

Merci de ton aide . C'est tellement logique ce que tu me dis !
J'ai commencé python depuis tres peu de temps . Que signifie :

  if __name__ == "__main__":  

Hors ligne

#4 Le 07/09/2020, à 14:26

kholo

Re : Try / Except ( Python)

  if __name__ == "__main__":  

pour faire simple, est une condition qui est vrai si le script (module) est lancé et non importé.
donc vrai tant que tu lances le script avec ou sans arguments.
tu as un excellent mooc sur fun mooc !! (au moins les 6 premières semaines et tu sauras coder proprement... enfin presque... lol )

Hors ligne

#5 Le 07/09/2020, à 14:51

Compte supprimé

Re : Try / Except ( Python)

Bonjour,

+1 avec l'ami kholo.
Sinon question code, s'il s'agit de vérifier la validité de la fonction division() serait plutôt celui ci:

def division(a,b):
    
    try:
        if a == "" or b == "":
            raise NameError
        return f"Résultat ---> {float(a)/float(b)}"
    except ZeroDivisionError:
        return "Division par zero impossible !"
    except ValueError:
        return "Entrez une valeur correcte !"
    except NameError:
        return "Variable non définie !"

while True:
        a = input("Entrez une valeur a : ")
        b = input("Entrez une valeur b : ")
        print(division (a,b))

à remarquer dans le cas présent l'usage de raise pour appeller l'exception NameErreur ...

#6 Le 08/09/2020, à 08:38

chris7522

Re : Try / Except ( Python)

Merci a tous les deux d'avoir pris le temps de me repondre .

Il y a certaine chose que je n'ai pas compris :
   - Tu utilises 2 fois NameError , une fois avec le raise et ensuite avec except . Je ne saisis pas la nuance entre les deux . Il n'y a t il pas double emploi ? Dans le except , il s'agit de verifier si la variable a bien été défini mais dans le raise ?
  - Je ne comprends pas cette ligne , de quoi s'agit il ? le " f " est il une variable ?

return f"Résultat ---> {float(a)/float(b)}"

- La variable a et b dans le while n'a pas besoin d'etre casté ?

Hors ligne

#7 Le 08/09/2020, à 09:06

Compte supprimé

Re : Try / Except ( Python)

Bonjour,

Raise permet de lever une exception .

raise NameError

provoque l'exception NameError


 except NameError

capture l'exception NameError (qui est provoqué dans mon code par raise NameError)



Je ne comprends pas cette ligne , de quoi s'agit il ? le " f " est il une variable ?

Le f désigne qu'il s'agit d'un fstring. https://he-arc.github.io/livre-python/f … index.html

Edit/précision :
Les fstrigs permettent de formater facilement une chaîne de caractère. Ils existent depuis python3.6.
exemples basiques:

nom = 'quimousse'
prenom = 'pierre'
#Formatage avec fstring
print(f"Monsieur {prenom} {nom} n'amasse pas mousse...")
print(f"Monsieur {prenom.capitalize()} {nom.capitalize()} n'amasse pas mousse...")

#formatage avec format
print("Monsieur {} {} n'amasse pas mousse...".format(prenom, nom))

Dernière modification par Compte supprimé (Le 08/09/2020, à 17:13)

#8 Le 13/09/2020, à 11:39

chris7522

Re : Try / Except ( Python)

Bonjour ,
Je ne dois pas etre tres futé car je ne comprends pas le fonctionnement du mooc suivant :
mooc python
Je n'ai jamais eu l'occasion de suivre un mooc et j'aimerai en connaitre le fonctionnement .
S'agit il de video en ligne ?

A propos de ce mooc , Il est ecrit :
debut du cours 1 septembre 2020 , mais je ne vois pas de video ...

Hors ligne

#9 Le 13/09/2020, à 13:06

kholo

Re : Try / Except ( Python)

salut...
bon... je ne pense pas qu'il y ait quelques complications...
tu crées un compte, ça doit être fait...
sur le cours (la page que tu s envoyé) tu vas t'inscrire à droite où est marqué "inscription"...
ça doit être marqué ou ça doit t'envoyer sur les pages à suivre...
sinon
en haut à droite tu as accès à ton nom et donc à tous les paramètres de ton compte...
ou, en cliquant sur ton nom, tu as accès à tous les cours sur lesquels tu es inscrit...

dans le pire des cas, sur fun mooc, tu as une bonne équipe
et un forum pour discuter de toutes questions qui concernent autant le côté technique que les cours
NB : je n'ai aucun intérêt sur ce mooc (ni aucun autre...) lol

Hors ligne