Partage
  • Partager sur Facebook
  • Partager sur Twitter

[deleted]

Sujet résolu
1 juillet 2018 à 20:42:22

[deleted]

-
Edité par ZKAW 13 septembre 2023 à 10:41:43

  • Partager sur Facebook
  • Partager sur Twitter
1 juillet 2018 à 22:30:33

AideVar est locale à aux fonctions frlng() et enlng(), et encore, c'est même pas le même AideVar dans chacune d'elles, donc AideVar est hors de portée du code principal.
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

1 juillet 2018 à 23:31:49

[deleted]

-
Edité par ZKAW 13 septembre 2023 à 10:41:53

  • Partager sur Facebook
  • Partager sur Twitter
2 juillet 2018 à 4:05:18

ZKAW a écrit:

Merci de ta réponse, et qu'est-ce que je pourrais faire pour remédier à ce problème ?

Revoir toute la conception. Le problème c'est que la plupart des cours de programmation apprennent la syntaxe du langage et les éléments de base de la programmation, mais parlent pas trop conception, structures de données. Et les bons cours sont souvent en anglais et pas si faciles à aborder (par exemple le HTDP et SICP).

Pour détailler les trucs qui collent pas dans ton code :

Les imports : les lignes 10 et 11 sont inutiles, tu as déjà importé os et sys, pas besoin de le refaire en important une seule fonction alors que tu as déjà importé le module entier. Tu n'as peut-être pas compris comment marchent les imports ?

L'organisation du code : on déclare les fonctions en début de fichier, après les imports, mais surtout avant le code principal du module, la fonction aide() est définie en fin de fichier, c'est le bordel.

La portée des variables : c'est un truc de base, tu peux pas programmer si tu maîtrises pas ça.

La conception : le choix des fonctions pour enlng et frlng est à côté de la plaque, tu cherches à définir des données, donc il faut les mettre dans des structures de données. Les fonctions, elles font des traitements sur les données. Tu redéfinis 3 fois les couleurs aussi (ta ligne à rallonge, d'ailleurs trop longue, 80 caractères max pour éviter le scroll horizontal).

Mais bon, rassures toi, au bout de seulement 2 semaines de programmation c'est pas surprenant de faire des erreurs de ce genre.

  • Partager sur Facebook
  • Partager sur Twitter

Blond, bouclé, toujours le sourire aux lèvres...

2 juillet 2018 à 12:36:04

[deleted]

-
Edité par ZKAW 13 septembre 2023 à 10:42:05

  • Partager sur Facebook
  • Partager sur Twitter
2 juillet 2018 à 12:52:35

Salut :)

En gros, les structures de données c'est comment j'organise mes données : dans une liste, un dico, un tuple, une base de données, des classes, etc.

Pour faire un bon choix, il faut analyser ses besoins. Parfois, ne pas hésiter à prendre un échantillon de 2 ou 3 données et de tester les 2 ou 3 structures choisies et d'éliminer les 2 moins bonnes.

  • Partager sur Facebook
  • Partager sur Twitter
9 juillet 2018 à 0:53:21

[deleted]

-
Edité par ZKAW 13 septembre 2023 à 10:42:10

  • Partager sur Facebook
  • Partager sur Twitter
13 septembre 2023 à 11:31:20

Bonjour, on ne supprime pas ses messages après avoir reçu de l'aide, je recopie ci après les messages d'origine pour archive et ferme ce sujet.

ZKAW a écrit:

Salut !

J'ai récemment créer un programme python pour vérifier l'éxistence d'une email, tout fonctionnait bien mais je voulais rendre mon script universel, donc j'ai fait un système de traduction qui va détecter la langue système pour en suite rechercher le string correspondant dans un fichier "langage"

Seulement voilà, quand je lance le programme, cette erreur s'affiche:

Traceback (most recent call last):
  File "VerifyMail.py", line 225, in <module>
    aide()
  File "VerifyMail.py", line 39, in aide
    print(AideVar)
NameError: global name 'AideVar' is not defined

Alors que pourtant 'AideVar' est défini dans le fichier "langage"

Voici une partie de mon fichier de code principal

# -*- coding: iso-8859-15 -*-
#!/usr/bin/python
 
import sys
import os
import locale
 
 
 
from os import system
from sys import stdout, exit
from validate_email import validate_email
 
system('clear')
 
DEFAULT, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, LIGHTGRAY, DARKGRAY, LIGHTRED, LIGHTGREEN, LIGHTYELLOW, LIGHTBLUE, LIGHTMAGENTA, LIGHTCYAN, WHITE, GRAY = '\33[39m', '\33[30m', '\33[31m', '\33[32m', '\33[33m', '\33[34m', '\33[35m', '\33[36m', '\33[37m', '\33[90m', '\33[91m', '\33[92m', '\33[93m', '\33[94m', '\33[95m', '\33[96m', '\33[97m', '\33[30m'
 
 
 
 
locale.setlocale(locale.LC_ALL, "")
lng = locale.getlocale(locale.LC_MESSAGES)[0]
 
 
 
if 'fr' in lng:
 
    from langages import frlng
else:
    from langages import enlng
 
 
 
 
 
def aide():
 
  print(AideVar)<br><br>aide()

Et voici le code du fichier "langage"

# -*- coding: iso-8859-15 -*-
#!/usr/bin/python
 
 
 
def frlng():
    DEFAULT, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, LIGHTGRAY, DARKGRAY, LIGHTRED, LIGHTGREEN, LIGHTYELLOW, LIGHTBLUE, LIGHTMAGENTA, LIGHTCYAN, WHITE, GRAY = '\33[39m', '\33[30m', '\33[31m', '\33[32m', '\33[33m', '\33[34m', '\33[35m', '\33[36m', '\33[37m', '\33[90m', '\33[91m', '\33[92m', '\33[93m', '\33[94m', '\33[95m', '\33[96m', '\33[97m', '\33[30m'
    AideVar = '''
    {0}Sélectionnez une option:
 
    {5}[{2}1{5}]{2}     Réaliser une recherche pour une seule email.
    {5}[{2}2{5}]{2}     Réaliser une recherche depuis une liste d'email.
    {5}[{2}3{5}]{2}     Créér une liste d'email.
 
    {5}[{1}0{5}]{1}     Quitter.
 
    '''.format(LIGHTGRAY, MAGENTA, LIGHTMAGENTA, LIGHTRED, RED, GRAY)
 
    MultiInputVar = "\n  Chemain d'accès menant à la liste d'email (.txt): "
 
    EmailFoundedVar = " [✔] Email trouvée !"
 
def enlng():
 
    DEFAULT, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, LIGHTGRAY, DARKGRAY, LIGHTRED, LIGHTGREEN, LIGHTYELLOW, LIGHTBLUE, LIGHTMAGENTA, LIGHTCYAN, WHITE, GRAY = '\33[39m', '\33[30m', '\33[31m', '\33[32m', '\33[33m', '\33[34m', '\33[35m', '\33[36m', '\33[37m', '\33[90m', '\33[91m', '\33[92m', '\33[93m', '\33[94m', '\33[95m', '\33[96m', '\33[97m', '\33[30m'
 
    AideVar = '''
    {0}Select an option:
 
    {5}[{2}1{5}]{2}     Make a research for one email.
    {5}[{2}2{5}]{2}     Make a research from an email list.
    {5}[{2}3{5}]{2}     Create an email list.
 
    {5}[{1}0{5}]{1}     Exit.
 
    '''.format(LIGHTGRAY, MAGENTA, LIGHTMAGENTA, LIGHTRED, RED, GRAY)
 
    MultiInputVar = "\n  Path of the email list (.txt):"
 
    EmailFoundedVar = " [✔] Email founded !"
 
    EmailInvalidVar = " [✘] Email invalid !"

Je précise que je me suis mis au python il y a seulement deux semaines donc certaines erreurs sont encore confuses pour moi !

Merci d'avance !

---------------------------

Merci de ta réponse, et qu'est-ce que je pourrais faire pour remédier à ce problème ?

---------------------------

Merci beaucoup pour tes conseils ! Mais j'ai cette nuit trouvé autre façon de traduire mon code, j'ai tout simplement, lieu de faire un fichier "langage" tout mis dans le code principal, c'est pas très ergonomique mais fonctionnel.

Et quand tu parles de structure de données, c'est-à-dire ?

---------------------------

Hello !

D'accord j'ai à peu prêt compris je vais me renseigner un peu plus sur le sujet tout de même, car même si j'ai trouvé une solution c'est mieux d'avoir un code organisé pour mieux s'y retrouver.

A plus tard ! :)



  • Partager sur Facebook
  • Partager sur Twitter