[Problème de variables dans des conditions][Python]

[Python] [Problème de variables dans des conditions] - Python - Programmation

Marsh Posté le 16-04-2006 à 19:34:08    

Bonjour à tous,
D'abord, Bonne fêtes  
Voila, je vous expose mon problème.
je n'arrive pas à mettre une variable dans une condition de While, ni de IF
ex :
 
 
    Code:
while nbre < lavariable:
[...] le code [...]
if (nbre == lavariable ):  
 
Ce que je veux faire, c'est ouvrir un dictionnaire, dire le nombre de
mots qu'il contient (lavariable) avec un : raw_input et tant que Nombre
< nombre de mots du dico(la variable) , il continue
mais cela ne marche pas.
 
Savez vous pourquoi je ne peux pas placer de variables dans des conditions ?
 
Sinon, je pense peut être me tromper, mais où ?
 
Ce qu'il faut aussi savoir, c'est que "lavariable", ce sont des
nombres, peut être cela joue-t-il une importance ? il faudrait peut
être mettre des caractères spéciaux ?  
Merci d'avance et à bientôt


Message édité par Kadajj le 16-04-2006 à 23:16:50
Reply

Marsh Posté le 16-04-2006 à 19:34:08   

Reply

Marsh Posté le 16-04-2006 à 22:00:26    

Donnes ton code qui ne marche pas, là c'est pas compréhensible.
 
Sinon petite exercice : écrire une fonction qui prend en entrée un texte et  qui le retourne en ayant supprimé les lignes vides inutiles.

Reply

Marsh Posté le 16-04-2006 à 23:23:42    

le code est :  
 
//// Debut du code ////
 

Code :
  1. print "   Ce tools vous permet de choisir un nom d'utilisateur  "
  2. print "              dans un dico et de le retrouver    "
  3.  
  4. nom = raw_input("Quel est le nom a trouver ? " )
  5. print "le nom a trouver est:" + nom
  6. dico = raw_input("Quel est l'emplacement du dictionnaire? " )
  7. print "L'emplacemement du dictionnaire est: " + dico
  8. nbremax = raw_input("Combien de nombre de noms a t il ? " )
  9. print "Le nombre de mots est de : " + nbremax
  10. print "Le decorticage du nom" + nom + " s'effectue..."
  11.  
  12.  
  13. #ouverture du dico
  14. fichier=open( dico , 'r')
  15. nbre=0
  16. #boucle du decorticage
  17. while nbre < nbremax:
  18.     nbre=nbre+1
  19.     #selection du mot du dico
  20.     mot=fichier.readline()
  21.     mot=mot.rstrip()
  22.  
  23.     #comparaison
  24.     if nom == mot :
  25.         nbre=1252245251452545254524557547754
  26.         #Message de victoire
  27.         print "+++----------------------------------------------+++"
  28.         print "+              Ce nom a ete trouver !!!!           +"
  29.         print "+++----------------------------------------------+++"
  30.         print "Le mot : ",
  31.         print  nom
  32.         print "et sa correspondance est :",
  33.         print  mot
  34.         print "+++----------------------------------------------+++"
  35.  
  36. if nbre == nbremax :
  37.     print "+++----------------------------------------------+++"
  38.     print "+   Nous n'avons pas trouve de correspondance      +"    
  39.     print "+++----------------------------------------------+++"
  40.     print "le nom :",
  41.     print  nom
  42.     print "Essayez un nouveau dictionnaire."
  43.     print "+++----------------------------------------------+++"


 
//// fin du code ////
 
Si je choisis un mot qui ne marche pas, cela ne marche pas : /  
et cela est dû à la variable "nbremax" ... je ne sais pas comment faire pour que personne n'ait à toucher à la source et mettre le nombre total de mot que le dictionnaire contient, Merci d'avance ;)


Message édité par Kadajj le 17-04-2006 à 13:26:08
Reply

Marsh Posté le 17-04-2006 à 12:41:12    

Faudrait mettre ton code entre balise [code=python][/code]
 
Et pour ton nombre max, t'en as pas besoin (si j'ai bien compris) : une fois que tu arrives au bout de ton fichier, tu t'arrêtes. Pas besoin de savoir le nombre de lignes du fichier.

Reply

Marsh Posté le 17-04-2006 à 12:42:50    

et ya pas besoin de parenthèses pour la condition de tes if.

Reply

Marsh Posté le 17-04-2006 à 13:26:56    

Merci de ta réponse mais cela m'aide pas pour la variable nbremax, savez vous comment je peux faire pour qu'elle soit prise en compte ? car sinon le programme cherche le mot sans s'arrêter!

Reply

Marsh Posté le 17-04-2006 à 15:51:01    

Il faut que tu reprennes depuis le début la manière dont tu lis le fichier de données.
 
Si celui-ci a cette tête (chaque mot est séparé par un retour à la ligne) :


avalanche
bette
casserole
...


 
tu peux extraire les mots les uns après les autres par :
 

Code :
  1. fichier=open( dico , 'r')
  2. mots = fichier.read().splitlines()
  3. for mot in mots:
  4.     print mot


---------------
rule #1 : trust the python
Reply

Marsh Posté le 17-04-2006 à 17:41:32    

suizokukan a écrit :

Il faut que tu reprennes depuis le début la manière dont tu lis le fichier de données.
 
Si celui-ci a cette tête (chaque mot est séparé par un retour à la ligne) :


avalanche
bette
casserole
...


 
tu peux extraire les mots les uns après les autres par :
 

Code :
  1. fichier=open( dico , 'r')
  2. mots = fichier.read().splitlines()
  3. for mot in mots:
  4.     print mot



[:pingouino]
Si il a bel et bien un mot par ligne; les gens simples avec un Python moderne vont même faire

Code :
  1. for mot in open(dico):
  2.    print mot


Parce que bon charger le fichier complet en mémoire deux fois de suite j'veux pas être méchant mais c'est un peu nazebroque [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-04-2006 à 20:40:41    

<bruit du singe qui dégringole de l'arbre...>
 
Ah la vache ! je pensais pas qu'on pouvait aller jusque là en Python ! Merci Masklinn.


---------------
rule #1 : trust the python
Reply

Marsh Posté le 17-04-2006 à 23:39:11    

Merci de vos réponses mais j'ai trouvé,  
 

Code :
  1. nbremax = raw_input("Combien de nombre de noms a t il ? " )
  2. print "Le nombre de mots est de : " + nbremax


 
par

Code :
  1. nbremax = input("Combien de nombre de noms a t il ?" )


 

Reply

Marsh Posté le 17-04-2006 à 23:39:11   

Reply

Marsh Posté le 17-04-2006 à 23:52:24    

Juste pour être sur : il sert à quoi exactement ce nombre ?

Reply

Marsh Posté le 17-04-2006 à 23:57:23    

input... lol [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed