Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2655 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  prob d'indentation :( [resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

prob d'indentation :( [resolu]

n°313919
amsterdam
Posté le 20-02-2003 à 12:04:15  profilanswer
 

Salut.
Voilà mon problème, j'ai fait un petit prog en python qui ne se comporte pas comme il devrait.
En changeant l'indentation je peux corriger une partie mais dans ce cas çà commence
 à merder plus loin.
 
Le code en question:
 
 

def depart():
    'debut de prog'
print 'Choix possibles'
print 'Conversion base2>base10 tapez: 1'
print 'Conversion base10>base2 tapez: 2'
print 'Quitter                 tapez: 0'
choix=raw_input('Entrez votre choix: ')
if choix == "1":
    base2_base10()      
                         
 
    def base2_base10():
        total=raw_input('Veuillez entrer un nombre en base 2:')
 
        cpt_rang = 1
        resultat = 0
        cpt_total = len(total)
 
 
        while cpt_total > 0: #tant que il reste un caractere dans la variable
            chiffre = total[-1:]
            resultat = int(chiffre) * cpt_rang + resultat
            total = total[:-1]
            cpt_total = cpt_total -1
            cpt_rang = (cpt_rang * 2)
 
        print resultat
        choix=raw_input('Pour recommencer tapez 1 sinon tapez 2 ')
if choix == "1":
    base2_base10()
else:depart()
 
 
 
 
 
 


 
J'ai fait des recherches mais n'ai rien trouvé de clair sur l'indentation.


Message édité par amsterdam le 20-02-2003 à 16:19:45
mood
Publicité
Posté le 20-02-2003 à 12:04:15  profilanswer
 

n°313920
kadreg
profil: Utilisateur
Posté le 20-02-2003 à 12:05:47  profilanswer
 

Et lorill qui est en vacances ...


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°313921
amsterdam
Posté le 20-02-2003 à 12:09:56  profilanswer
 

Zut moi qui pensait lui faire plasir. :d
Mais qu'il se rassure il n'a pas fini avec moi, vu le boulet que je suis. :d

n°313923
Serial Cod​er
Posté le 20-02-2003 à 12:12:03  profilanswer
 

Amsterdam, c'est la femelle du hamster ?


---------------
Je code en série et en parallèle
n°313926
walli
Posté le 20-02-2003 à 12:14:33  profilanswer
 

tiens un nantais...
  :hello:  

n°313927
amsterdam
Posté le 20-02-2003 à 12:15:03  profilanswer
 

Heu nan c'est une ville.
Joueur rejoue....
 
Salut walli. :hello:


Message édité par amsterdam le 20-02-2003 à 12:16:00
n°313937
Taz
bisounours-codeur
Posté le 20-02-2003 à 12:29:07  profilanswer
 

tu sais qu'en python l'indentation défini les bloc (comme les {} ou les begin-end) ???

n°313942
Taz
bisounours-codeur
Posté le 20-02-2003 à 12:37:44  profilanswer
 

j'ai trouvé: tes tabulations sont crades, y a plein d'espace parasites, donc la synthaxe est incorrecte. change d'editeur de texte ou configure le pour avoir des tabulations dures (hard tabs). je ne peux que te conseiller t'utiliser idle

n°313945
amsterdam
Posté le 20-02-2003 à 12:44:06  profilanswer
 

J'ai utilisé IDLE pour l'écrire mais je sais pas trop comment faire.
 
Sinon dans IDLE est il possible d'augmenter la taille de la police, parce que là c'est vraiment petit.
 
PS: je sais que c'est un problème d'indentation, d'ou mon titre.


Message édité par amsterdam le 20-02-2003 à 12:45:22
n°313952
Taz
bisounours-codeur
Posté le 20-02-2003 à 12:49:52  profilanswer
 

ben moi j'ai pris ton code, j'ai supprimé l'indentation aux lignes ou il y avait des problèmes, puis je les ai refaites et plus de problème

mood
Publicité
Posté le 20-02-2003 à 12:49:52  profilanswer
 

n°314006
amsterdam
Posté le 20-02-2003 à 14:09:13  profilanswer
 

Désolé mais chez moi ca ne marche pas.
Petite question que puis-je mettre au même niveau qu'un def ?
Les print
le if
le choix=

n°314030
amsterdam
Posté le 20-02-2003 à 14:38:17  profilanswer
 

def base2_base10():
    ''
total=raw_input('Veuillez entrer un nombre en base 2:')
cpt_rang = 1
resultat = 0
cpt_total = len(total)
while  cpt_total > 0: #tant que il reste un caractere dans la variable
  chiffre = total[-1:]
  resultat = int(chiffre) * cpt_rang + resultat
  total = total[:-1]
  cpt_total = cpt_total -1
  cpt_rang = (cpt_rang * 2)
print resultat
choix=raw_input('1 ou 2 ')
if choix=="1":
    base2_base10()

 
 
Quand j'écrit çà et que je tape 1 au deuxième choix le prog s'arrête sans retourner au début de la fonction.
Par contre au début j'ai bien l'invite du début de la fonction.


Message édité par amsterdam le 20-02-2003 à 14:41:26
n°314045
Taz
bisounours-codeur
Posté le 20-02-2003 à 14:50:59  profilanswer
 

tu vois bien que t'as des espaces qui trainent
 
au meme niveau que le def tu peut mettre des varaibles globales,d 'autres fonctions et le "main"
 
je crois que le vrai problème c'est que tu n'as pas compris l'importance de l'indentation
 
 

Code :
  1. def depart():
  2.     print "Choix possibles"
  3.     print 'Conversion base2 > base10 tapez: 1'
  4.     print 'Conversion base10 > base2 tapez: 2'
  5.     print 'Quitter                   tapez: 0'
  6.     choix=raw_input('Entrez votre choix: ')
  7.     if choix == "1":
  8.         base2_base10()
  9.     # sinon ?
  10. def base2_base10():
  11.     total=raw_input('Veuillez entrer un nombre en base 2:')
  12.     cpt_rang = 1
  13.     resultat = 0
  14.     cpt_total = len(total)
  15.     while cpt_total > 0: #tant que il reste un caractere dans la variable
  16.         chiffre = total[-1:] # qui renvoie une liste et pas un int
  17.         # hiffre=total[-1]       
  18.         resultat = int(chiffre) * cpt_rang + resultat
  19.         total = total[:-1] # peut etre il serait plus elegant de faire
  20.         # del total[-1]
  21.         # ou mieux total.pop(-1) qui renvoie le dernier element et le supprime
  22.         cpt_total = cpt_total -1 # cpt_total-=1
  23.         cpt_rang = (cpt_rang * 2) # cpu_rang*=2
  24.     print resultat
  25.     choix=raw_input('Pour recommencer tapez 1 sinon tapez 2 ')
  26.     if choix == "1":
  27.         base2_base10()
  28.     else:
  29.         depart()
  30. depart()

n°314075
amsterdam
Posté le 20-02-2003 à 15:23:24  profilanswer
 

Ok merci c'est bon c'est le depart() qui manquait en bas. :lol:  pataper
Sinon je vais essayer les modifs que tu m'as montrées.
Enfin j'ai quand même survécu à mon premier prog en python.
A+ pour de nouveaux problèmes. :hello:
 
PS: l'indentation n'a pas fini de me faire ch... je pense. :d

n°314269
Taz
bisounours-codeur
Posté le 20-02-2003 à 18:48:56  profilanswer
 

petite correction. pop() à le meme effet que pop(-1)

n°314395
amsterdam
Posté le 20-02-2003 à 21:34:16  profilanswer
 

Si je fait:
del total[-1]
L'interpréteur me sort:
object doesn't support item deletion.
Une idée ?

n°314399
Taz
bisounours-codeur
Posté le 20-02-2003 à 21:44:06  profilanswer
 

ça doit etre par ce que ta varaible est une string (immuable) et pas une list. autant pour moi j'avais pas vu
 
d'ailleurs pourquoi garder une représentation textuelle et pas passé à un type entier?
 
en général, si on veux modifier des sequences de caracteres un nombre de fois important (ou des tuples), on passe au type list


Message édité par Taz le 20-02-2003 à 21:49:25
n°314402
amsterdam
Posté le 20-02-2003 à 21:51:06  profilanswer
 

Ok je vais voir pour les listes.

n°314403
Taz
bisounours-codeur
Posté le 20-02-2003 à 21:53:10  profilanswer
 

ou passe en int. au lieu de supprimer un caractere, tu divises par 10

n°314404
amsterdam
Posté le 20-02-2003 à 21:57:52  profilanswer
 

Question idiote, pourqoi par dix ? :heink:
 
ps: c'est bon j'ai trouvé. :lol:
ps2: je fatigue moa.


Message édité par amsterdam le 20-02-2003 à 22:02:38
n°314409
Taz
bisounours-codeur
Posté le 20-02-2003 à 22:05:41  profilanswer
 

amsterdam a écrit :

Question idiote, pourqoi par dix ? :heink:
 
ps: c'est bon j'ai trouvé. :lol:
ps2: je fatigue moa.


si tu fais base2 vers base10, tu divise par 10
si tu fais base10 vers base2, tu divise par 10

n°314415
amsterdam
Posté le 20-02-2003 à 22:22:42  profilanswer
 

Ok je commence la conversion base10>base2 maintenant que j'ai trouvé l'intruction pass.
Merci encore.:)

n°314423
Taz
bisounours-codeur
Posté le 20-02-2003 à 22:36:53  profilanswer
 

pour transformer une string en une list de caractere, moi je ferais
map(None, "Hello" )

n°314436
amsterdam
Posté le 20-02-2003 à 22:48:30  profilanswer
 

Et pour passer une variable string en int ?

n°314438
Taz
bisounours-codeur
Posté le 20-02-2003 à 22:50:09  profilanswer
 

int("123" )
float("3.1415" )
str(2)

n°314448
amsterdam
Posté le 20-02-2003 à 23:02:51  profilanswer
 

Je viens de m'apercevoir que je l'avait déjà dans mon prog. :lol:

n°315840
lorill
Posté le 23-02-2003 à 14:55:24  profilanswer
 

kadreg a écrit :

Et lorill qui est en vacances ...

[:sinclaire]

n°315843
amsterdam
Posté le 23-02-2003 à 15:04:17  profilanswer
 

Rassures toi vu le boulet que je suis, tu auras certainement l'occasion de te refaire. :d

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  prob d'indentation :( [resolu]

 

Sujets relatifs
[Résolu][Php] Problème explorateur de fichiers (lecteur réseau)problème incroyable.... [RESOLU]
[Résolu][Php/Oracle] Problème de caractères bizarres après extractionprob lors de l'upload avec free [ - Job's Done - ]
prob avec le W3C Validator... [ - Job's Done - ][Windows] Comment lancer un programme en tache de fond ? RESOLU
variable partagée [C] [résolu][Delphi / VB] Besoin de comprendre un code Delphi (résolu)
[HTML, JS][RESOLU] faudra qu'on m'explique[HTML] Tableau : Prob de hauteur de cellules (avec img)
Plus de sujets relatifs à : prob d'indentation :( [resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR