[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]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
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]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Sujets relatifs:

Leave a Replay

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