Bonjour a tous,
Je suis un nouvel utilisateur de python c'est la première fois que je code . J'ai lu un maximum de tutoriel de FAQ etc. J'ai ecris mon premier programme un programme simple qui permet d'entrer d'effacer et d'afficher des contacts pour faire simple .
voici le code
main :
pour modules.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 import modules, Contact listContacts=[] choixUser="" while choixUser !='4' : print('Entrez : 1 pour ajouter un contact') print('Entrez : 2 pour enlever un contact') print('Entrez : 3 pour lister les contacts') print('Entrez : 4 pour sortir ') choixlist=["1","2","3","4"] choixUser=modules.demandeVerifie(choixlist) if choixUser == '1' : chx=raw_input('Entre son nom -->') while chx == "" : print('Tu dois pas laisser le champs vide') chx=raw_input('Entre son nom -->') Contact.ajouterContact(chx, listContacts) elif choixUser == '2' : if listContacts != [] : print('enleve un contact parmis les suivants :') Contact.afficherContact(listContacts) print ('entre le numero d\'index correspondant au contact a effacer') list= [str(x) for x in range(len(listContacts))] # passe la liste d'entier correspondant au index en liste de chaine chx=modules.demandeVerifie(list) Contact.enleverContact(int(chx), listContacts) else : print('la liste de contacts est vide rien a afficher') elif choixUser == '3' : Contact.afficherContact(listContacts)
et enfin Contact.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 def demandeVerifie(list) : #demande et retourne un bon choix #demande ton choix choixUser=raw_input('Entre ton choix -->') #Verifie si ton choix et bon et te redemande jusqu'a ce qu'il le soit while verification(choixUser, list) == False : print( 'Valeur erronee voici les valeurs justes : {0}'.format(list)) choixUser=raw_input('entre ton choix -->') #retourne un bon choix return choixUser def verification(entree,liste) : #verifie si une entree est dans la liste a=False x=0 while x<len(liste) : if liste[x] == entree : a=True x+=1 #retrourne vrai ou faux en fonction return a
os : debian squeeze
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 class Contact : population=0 def __init__(self,nom): self.nom=nom Contact.population +=1 def __del__ (self): Contact.population -=1 def afficheNom (self): return self.nom def ajouterContact(nom,list): list.append(Contact(nom)) def enleverContact(ind,list): del list[ind] def afficherContact(list): if list == [] : print('la liste de contact est vide') else : print('---------------------------------------') x=0 while x<len(list) : temp = list[x].afficheNom() print('{0} est en postion index : {1}'.format(temp,x)) x+=1 print('---------------------------------------')
IDE: eclipse 3.6 avec pydev 1.6.1.2
interpreteur : python 2.6
1)Comme je n'ai jamais codé je voudrais des conseils , savoir ce que j'ai mal fait ce que je peux améliorer dans la façon de coder etc
2) Le programme tourne (apparemment) normalement sous python 2.6 mais des que je passe avec python 3.1 alors bonjour les dégats. J'ai fait mes recherches et je trouve (dive into python 3) :
Python 2 had two global functions for asking the user for input on the command line. The first, called input(), expected the user to enter a Python expression (and returned the result). The second, called raw_input(), just returned whatever the user typed. This was wildly confusing for beginners and widely regarded as a “wart” in the language. Python 3 excises this wart by renaming raw_input() to input(), so it works the way everyone naively expects it to work.
Donc je remplace raw_input() par input() pour que python 3 marche et la bienvenue dans sink into python 3....
car si effectivement input() dans python 3.1 semble renvoyer une string je dis semble car prenons le bout de code suivant sur python 3.1
[code]
p= input()
print (p)
eval (p)
[/code ]
eval() renvoie une erreur ou on semble voir qu'il parle d'une string .... et pourquoi eval() léve une erreur sur p ....encore plus bizarre ...
Etant plutôt persistent je passe dans le mode debug de eclipse et si je tape ( dans le bout de code ci -dessus) 1 puis entrée je vois la variable p sous cette forme str : 1\n alors que print n affiche que 1 .
Ce qui me semble délirant c'est qu'un code sous 2.6 ne passe pas sur 3 .1 que l'inverse soit vrai ok car avec les nouveaux modules etc ca se comprend mais que le code ne soit pas portable de l'ancien au nouveau ca me tue
Ben voila j'espère avoir été clair merci de m'avoir lu j'attends vos remarques et observations.
@+
Partager