Petite question sur import [résolu] - Python - Programmation
Marsh Posté le 23-02-2003 à 22:53:25
ben tu fais ton module.py et ailleurs tu fais "import module" et vlan
Marsh Posté le 23-02-2003 à 23:20:34
D'accord mais ensuite pour mes paramètres.
Je stocke mon entrée utilisateur dans disons var01.
Que doi-je donner comme info à mon sous prog.
Faut il modifier un sous prog quand on veut qu'il soit importable par un autre prog.
Marsh Posté le 24-02-2003 à 00:08:45
Je réussi à importer mon module, par contre l'interpréteur me dit:
NameError: global name 'total' is not defined
Je précise que le module importé fonctionne bien tout seul.
Marsh Posté le 24-02-2003 à 00:46:54
Maintenant il me rend bien une valeur mais c'est du genre:
0x809fefc
Donc c'est po encore tout à fait cà.
Marsh Posté le 24-02-2003 à 01:50:44
Un nouveau blem.
j'arrive à importer mon module de conversion base16>base10.
Mais quand il arrive à la ligne:
cpt_rang = len(total) #qui est dans le module importé
Il me sort:
TypeError: len() of unsized object
Késako?
Marsh Posté le 24-02-2003 à 10:27:57
je comprends rien a ton probleme
t'as pas un peu plus de source a montrer, ou d'explications a donner ?
Marsh Posté le 24-02-2003 à 10:41:18
en fait j'ai l'impression que t'as un truc tordu, du genre tout le code du module dans un seul bloc, sans fonctions, et que tu l'executes a l'import.
du coup ton probleme revient a faire passer les variables d'un module a un autre. c'est facile a faire, mais si j'ai bien devinné, oublie ca tout de suite et fais des fonctions prenant les paramètres qui vont bien
Marsh Posté le 24-02-2003 à 11:16:51
Voilà le module qui importe:
import base1610 |
Voilà le module importé:
|
Marsh Posté le 24-02-2003 à 11:20:36
Si je fais la meme chose mais avec un module importé plus simple genre:
var1=var1+var2 ca marche.
Marsh Posté le 24-02-2003 à 11:22:15
euh la c'est comme si tu tapais len(24)... ca peut pas marcher, vu que len compte le nombre d'elements/caracteres, d'une chaine, tuple, liste, ...
tu veux quoi exactement ?
Marsh Posté le 24-02-2003 à 11:24:38
Justement je veux connaitre le nombre de caractéres dens total.
Je précise que le module importé fonctionne très bien lancé tout seul.
C'est à l'importation que je merde.
Marsh Posté le 24-02-2003 à 11:27:18
non, ce n'est pas a l'importation...
raw_input te renvoie une chaine, 24 est un entier.
len() d'une chaine est valide, d'un entier non.
alors soit tu passes une chaine en param pour garder le même comportement (bof), soit tu fais un len(str(total)), pour convertir total en chaine avant et pouvoir compter le nombre de caractères.
Marsh Posté le 24-02-2003 à 11:27:43
Donc il faudrait que j'envoi mon 24 sous forme chaine ?
En sachant sera une entrée utilisateur.
Je n'ai mis le 24 que pour tester l'importation.
Marsh Posté le 24-02-2003 à 11:28:57
ouais, mets
Code :
|
et tu verras tout de suite
Marsh Posté le 24-02-2003 à 11:35:25
CA MAAAAARCHE!!!!!!!!
Sinon si je met les lignes qui sont pour l'instant en commentaire
pour pouvoir rféutiliser mon module tout seul au cas ou.
Marsh Posté le 24-02-2003 à 12:21:04
J'ai mis ceci avant ma fonction base16_base10
|
Mais il me met name' base16_base10' is not defined.
Si je lance le module base1610 tout seul.
Marsh Posté le 24-02-2003 à 12:30:05
normal, tu utilises la fonction avant de la définir.
deja, ca pose un probleme de procéder comme ca, parce que si tu importes ton module, le code va etre executé et l'utilisateur devra entrer la valeur.
ce qu'il faut, c'est mettre ca a la fin du module
Code :
|
__name__ est une variable interne qui contient le nom du module.
lors d'un import, le nom est le nom importé. lorsque c'est le module lancé directement, le nom est __main__.
du coup, le code dans le if n'est executé que si le module est lancé directement, et pas en import.
Marsh Posté le 24-02-2003 à 12:52:15
Merci pour ton aide lorill.
Donc j'ait fait ca que tu m'as dit.
Mais...
Si je termine ma fonction en tapant:
base16base10()
Il me sort: 'base16_base10' takes exactly 1 argument (0 given)
Par contre si je l'omet: il me calcule 2 fois.
Vu qu'il m'envoie la ligne 'veuillez......'
Et il me donne 2 résultas à la suite.
Marsh Posté le 24-02-2003 à 12:56:28
Code :
|
Note: j'ai pas vérifié le code, juste mis les bons bouts au bon endroit
Marsh Posté le 24-02-2003 à 13:09:02
Maintenant il ne me fait plus qu'un calcul si je l'importe donc ca c'est bon.
Par contre si je le lance tout seul il quitte sans rien faire.
Et si je lui met base16_base10() pour cloturer ma fonction il me met toujours:
base16_base10() takes exactly 1 argument (0 given)
Pourquoi tant de haine.
Marsh Posté le 24-02-2003 à 13:13:08
amsterdam a écrit : |
bon, ca c'est clair, ta fonction prends un param et tu lui en donne pas, ca peut pas marcher... ce qui m'embete moi, c'est ca :
amsterdam a écrit : |
parce qu'il devrait executer le code du if... tu le lance comment ton module ?
Marsh Posté le 24-02-2003 à 13:19:33
en copiant le code du message précédent dans un fichier toto.py, j'ai ca :
|
Autrement dit : www.chezmoicamarche.org
Marsh Posté le 24-02-2003 à 13:25:34
Sauf que chez moi je me suis apercu que si je met les ':' à la fin du if.
Il me sort: invalid syntax en me montrant les ':'
Et si je ne les mets pas il doit ne pas prendre en compte le if.
Marsh Posté le 24-02-2003 à 13:27:18
amsterdam a écrit : Sauf que chez moi je me suis apercu que si je met les ':' à la fin du if. |
montre le bout de code et le message d'erreur complet
Marsh Posté le 24-02-2003 à 13:27:51
Au fait j'ai cliquer sur ton chezmoicamarche.org.
Pourquoi cette question.
Marsh Posté le 24-02-2003 à 13:29:03
amsterdam a écrit : Au fait j'ai cliquer sur ton chezmoicamarche.org. |
c'est juste une manière de dire que chez moi ca marche, c'est a dire qu'avec le code que j'ai mis je n'ai pas le probleme que tu décris
Marsh Posté le 24-02-2003 à 13:33:14
Voici le bout de code en question:
if__name__== "__main__": |
Et le message:
SyntaxError: invalid syntax
ps:Je te demandais ca rapport à la vérification toutes les 'cinq minutes' dans la phrase.
Marsh Posté le 24-02-2003 à 13:34:23
avec un espace entre le if et le __name__ ca irait surement mieux
Marsh Posté le 24-02-2003 à 13:44:54
En effet ca marche mieux [:pataper:]
Par contre je doit merder au nivo de l'indentatio car il me dit
que resultat n'est pas défini.
Je vais voir ca
Marsh Posté le 24-02-2003 à 13:53:16
Super ca marche dans les deux cas import et direct.
Merci encore pour ta patience lorill.
ps: pour le dernier message d'erreur c'était une erreur de frappe.
Marsh Posté le 23-02-2003 à 22:46:43
Salut.
j'ai creé des petits prog de conversion genre base2>base10.
Je voudrais maintenant à partir de mon prog de départ envoyer
aux modules externes le résultat de l'entrée utilisateur et récupérer le résultat
de la conversion pour pouvoir l'afficher.
Si qqun peut me mettre sue la voie.
Merci d'avance.
Message édité par amsterdam le 24-02-2003 à 14:40:38