Problème définition variable

Résolu/Fermé
worox - Modifié le 13 avril 2022 à 22:36
jee pee Messages postés 39607 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 - 13 avril 2022 à 23:52
Bonjour,
je suis en train de dev un programme pour simplifier des calculs en math sur calculatrice avec Python.
mon code marche normalement correctement mais depuis que je l'ai complexifié en y rajoutant quelque variable en plus, il y a des problème de définition. voila mon code entier

import math
import time

msfin = "relancer le programme, pour pouvoir utiliser un autre programme."
programme = "programme 3 :"
fpro = "pour lancer un programme, taper le chiffre qui lui est attribué"
helpro = "pour regarder la liste des programmes, taper 100"
pwait = time.sleep(1.7)


print("bienvenue sur le programme d'aide en math crée par IDENTITE SUPPRIMEE PAR LA MODERATION")
time.sleep(1.7)
print(fpro)
time.sleep(1.7)
print(helpro)
pro = int(input(""))



if pro == 100:
    print("liste des programmes :")
    print("programme 1 : pour Pythagore")
    print("programme 2 : théorème de Thalès")

    for a in range(5):
        print(programme)
        #time.sleep(0.2)
    time.sleep(2)
    print(msfin)


if pro == 1:
    print("bienvenue dans le programme théorème de Pythagore")
    time.sleep(1.7)
    print(fpro)
    time.sleep(1.7)
    print(helpro)
    prePyt = int(input(""))


if prePyt == 100:
    print("liste des programmes :")
    print("programme 1 : calculer l'hypothénuse")
    time.sleep(0.2)
    print("programme 2 : calculer un coté différent l'hypothénuse")
    time.sleep(0.2)
    print("programme 3 : vérifier si le triangle est rectangle")
    time.sleep(2)
    print(msfin)



if prePyt == 1:
    print("bienvenue sur un programme pour calculer l'hypothénuse avec Pythagore")

    long_adj = int(input("mesure de la longueur adjace : "))
    long_opp = int(input("mesure de la longueur opposé : "))

    long_adj_carré = adj * adj
    long_opp_carré = opp * opp

    pytha_hyp = math.sqrt(adj * adj + opp * opp)

    print("dans le triangle ___ rectangle en _ ")
    print("l'hypothénuse est [] ")
    print("donc d'après le Theorème de Pythagore : ")
    print("hypothénuse² = adj² + O²")
    print("on répète meme étape que précédente")
    print("hypothénuse =")
    print(long_adj_carré)
    print("+")
    print(long_opp_carré)
    print("hypothénuse² =")
    print(long_adj_carré + long_opp_carré)
    print("hypothénus = ")
    print(pytha_hyp)


if prePyt == 2:
    print("bienvenue sur un programme pour calculer un coté différent l'hypothénuse avec Pythagore :")
    long_adj_bis = int(input("mesure de la longueur adjace : "))
    long_hyp_bis = int(input("mesure de l'hypothénuse : "))

    long_adj_bis_carré = long_adj_bis * long_adj_bis
    long_hyp_bis_carré = long_hyp_bis * long_hyp_bis

    long_opp_bis = math.sqrt(long_hyp_bis_carré - long_adj_bis_carré)

    print(long_opp_bis)


if prePyt == 3:
    print("bienvenue sur un programme pour vérifier si le triangle est rectangle avec Pythagore:")
    long_adj_bis_s = int(input("mesure de la longueur adjace : "))
    long_opp_bis_s = int(input("mesure de la longueur opposé : "))




if pro == 2:
    print("bienvenue dans le programme théorème de Thalès")
    time.sleep(1.7)
    print(fpro)
    time.sleep(1.7)
    print(helpro)
    pretha = int(input(""))


if pretha == 100:
    print("liste des programmes :")
    time.sleep(0.2)
    print("programme 1 : calculer la longueur d'un droite")
    time.sleep(0.2)
    print("programme 2 : vérifier si 2 droites sont parallèles")
    time.sleep(2)
    print(msfin)



oui ca fait beaucoup de code (120 lignes)
un conseil copie colle se programme sur ta machine pour que ca sois plus simple à regler.

et merci par avance de votre aide.

Configuration: Windows / Chrome 100.0.4896.88

5 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
13 avril 2022 à 22:56
Je ne sais pas où tu veux mettre un else, mais si tu le mets après le if qui plante, ça ne changera rien.

Une option est de commencer ton programme par intialiser les variables à une valeur par défaut.

Mais, avant, je pense qu'il faut te demander, est-ce nécessaire (ou imposé?) d'avoir 3 variables différentes pour choisir quel calcul faire? A mon sens non, mais bon

D'autre part, as tu appris à écrire des fonctions? Si oui, tu devrais y réfléchir
1
worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 9
13 avril 2022 à 22:57
ok merci pour ton aide. je vais voir ca demain.
0
jee pee Messages postés 39607 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 230
13 avril 2022 à 22:35
Bonjour,

Tu n'as pas détaillé quel est le soucis. Et sur le forum, il faut mettre en forme les codes pour notamment sur Python conserver les indentations. Je l'ai corrigé sur ta question. Pour le futur, la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icônes pour l'enrichissement du texte. Celle qui a cet aspect
<> ▼
permet d'appliquer au code, suivant une liste de valeurs, le format correspondant à sa nature (html, Php, C, Python, Shell, ...).

Un petit tuto là : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 9
13 avril 2022 à 22:40
voici le problème qui survient, et ca ne fait pas que ca avec cette ligne, mais avec d'autre
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
13 avril 2022 à 22:38
Bonsoir

peux tu expliquer un peu plus ce qui ne va pas?

PS 120 ligne c'est tout tout tout petit comme programme
0
worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 9
13 avril 2022 à 22:44
j'ai posté le problème, une réponse au dessus dans le message de jee pee
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
13 avril 2022 à 22:47
Si tu saisis n'importe quoi d'autre que 1 à la première question, jamais prePyt n'obtient de valeur donc quand à la ligne 41, tu essayes de vérifier sa valeur, tu obtiens ce type d'erreur.

Si tu réponds n'importe quoi d'autre que 2 à la première question, c'est preTha qui n'obtient pas de valeur, et donc l'erreur arrive quand tu veux tester sa valeur.

0
worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 9
13 avril 2022 à 22:51
et donc ce que j'ai compris, c'est que je dois dire à mon programme que si je ne reçois pas cette valeur, il n'agit pas et il reste tranquille donc en utilisant "else" ?
si j'ai bien compris bien sure
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jee pee Messages postés 39607 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 230
13 avril 2022 à 23:52
Tu devrais afficher les menus directement, pourquoi pour commencer avoir à saisir 100 ;-) les sleep sont agaçants

Et pour ne pas avoir de variables non définies, il faut indenter les lignes sur les sous menus
if pro ==1:
   ...
   if prePyt ==1:


J'ai repris ton code sur cette logique :

import math
import time

print("bienvenue sur le programme d'aide en math crée par Louis Verité")
print("liste des programmes :")
print("programme 1 : pour Pythagore")
print("programme 2 : théorème de Thalès")
pro=int(input("Votre choix : "))

if pro == 1:
    print("bienvenue dans le programme théorème de Pythagore")
    print("liste des programmes :")
    print("programme 1 : calculer l'hypothénuse")
    print("programme 2 : calculer un coté différent l'hypothénuse")
    print("programme 3 : vérifier si le triangle est rectangle")
    prePyt=int(input("Votre choix : "))

    if prePyt == 1:
       print("bienvenue sur un programme pour calculer l'hypothénuse avec Pythagore")

       long_adj = int(input("mesure de la longueur adjace : "))
       long_opp = int(input("mesure de la longueur opposé : "))

       long_adj_carré = adj * adj
       long_opp_carré = opp * opp

       pytha_hyp = math.sqrt(adj * adj + opp * opp)

       print("dans le triangle ___ rectangle en _ ")
       print("l'hypothénuse est [] ")
       print("donc d'après le Theorème de Pythagore : ")
       print("hypothénuse² = adj² + O²")
       print("on répète meme étape que précédente")
       print("hypothénuse =")
       print(long_adj_carré)
       print("+")
       print(long_opp_carré)
       print("hypothénuse² =")
       print(long_adj_carré + long_opp_carré)
       print("hypothénus = ")
       print(pytha_hyp)

    if prePyt == 2:
       print("bienvenue sur un programme pour calculer un coté différent l'hypothénuse avec Pythagore :")
       long_adj_bis = int(input("mesure de la longueur adjace : "))
       long_hyp_bis = int(input("mesure de l'hypothénuse : "))

       long_adj_bis_carré = long_adj_bis * long_adj_bis
       long_hyp_bis_carré = long_hyp_bis * long_hyp_bis

       long_opp_bis = math.sqrt(long_hyp_bis_carré - long_adj_bis_carré)
   
       print(long_opp_bis)

    if prePyt == 3:
       print("bienvenue sur un programme pour vérifier si le triangle est rectangle avec Pythagore:")
       long_adj_bis_s = int(input("mesure de la longueur adjace : "))
       long_opp_bis_s = int(input("mesure de la longueur opposé : "))

if pro == 2:
    print("bienvenue dans le programme théorème de Thalès")
    print("liste des programmes :")
    print("programme 1 : calculer la longueur d'un droite")
    print("programme 2 : vérifier si 2 droites sont parallèles")
    preTha=int(input("Votre choix : "))

    if preTha == 1:
       print("bienvenue sur un programme pourcalculer la longueur d'un droite:")

    if preTha == 2:
       print("bienvenue sur un programme pour vérifier si 2 droites sont parallèles:")
                
print("Relancer le programme, pour pouvoir utiliser un autre programme.")



0