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

  FORUM HardWare.fr
  Programmation
  Python

  Probleme avec un programe python

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme avec un programe python

n°2298595
qwer5tyi
la patience est une vertue
Posté le 03-04-2017 à 14:19:51  profilanswer
 

Bonjour a tous, j ai commencé la programmation en Python il y à peu et je voulais crée un petit programme pour séparer les lettres d'un message pour ensuite les transformée en une autre lettres(cryptage César). Malheureusement j'ai une erreur que je ne comprend pas... :fou:  :fou:  
mon code:
 
message = input("Message: " )
 
i = int(0)
j = slice(1)
 
liste = []
letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
listePlace = []
 
print(letters)
 
for x in message:
    liste.extend(message[i])
    i += 1
 
print(liste)
 
for q in range(len(message)):
    listePlace.extend(letters.index(liste[j]))
    j+=1
 
print(listePlace)
 
 
Le message d’erreur:
 
Message: message
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
['m', 'e', 's', 's', 'a', 'g', 'e']
Traceback (most recent call last):
  File "C:\Users\*********\Desktop\test2.py", line 19, in <module>
    listePlace.extend(letters.index(liste[j]))
ValueError: ['m'] is not in list
>>>

mood
Publicité
Posté le 03-04-2017 à 14:19:51  profilanswer
 

n°2298618
DDT
Few understand
Posté le 03-04-2017 à 18:31:51  profilanswer
 

Utilise les balises code.

 

Qu'est-ce que tu cherches à faire exactement avec

Code :
  1. j = slice(1)
  2. ...
  3. for q in range(len(message)):
  4.     listePlace.extend(letters.index(liste[j]))
  5.     j+=1


La méthode index retourne l'indice d'un élément alors que tu passes une tranche de ta liste (d'un seul élément).
Et j+=1 n'a aucun sens.


Message édité par DDT le 03-04-2017 à 18:32:38

---------------
click clack clunka thunk
n°2298620
qwer5tyi
la patience est une vertue
Posté le 03-04-2017 à 18:42:26  profilanswer
 

Merci. Après modification de mon code:
 
message = input("Message: " )
 
i = int(0)
j = int(0)
 
liste = []
letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
listePlace = []
 
print(letters)
 
for x in message:
    liste.extend(message[i])
    i += 1
print(liste)
 
for q in range(len(message)):
    l = str(letters.index(liste[j]))
    listePlace.extend(l)
    j+=1
print(listePlace)
 
J'obtiens un résultat incompréhensible:
 
Message: message
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
['m', 'e', 's', 's', 'a', 'g', 'e']
['1', '2', '4', '1', '8', '1', '8', '0', '6', '4'] <========
 
Pourquoi le 'm' est devenu un '1', et pourquoi y a t il plus de numéro que de lettre?
 
Merci d'avance

n°2298621
DDT
Few understand
Posté le 03-04-2017 à 18:55:31  profilanswer
 

Parce que l'indice de 'm' c'est 12.
 

Code :
  1. >>> foo = []
  2. >>> foo += '12'
  3. >>> foo
  4. ['1', '2']
  5. >>> foo += ['34']
  6. >>> foo
  7. ['1', '2', '34']
  8. >>> foo.extend('56')
  9. >>> foo
  10. ['1', '2', '34', '5', '6']
  11. >>> foo.extend(['78'])
  12. >>> foo
  13. ['1', '2', '34', '5', '6', '78']
  14. >>> foo.append('90')
  15. >>> foo
  16. ['1', '2', '34', '5', '6', '78', '90']


---------------
click clack clunka thunk
n°2298624
qwer5tyi
la patience est une vertue
Posté le 03-04-2017 à 19:11:20  profilanswer
 

AAAAAAAAAAAAAAAAAAAAAAAAA....okkkkkkkk
Merci bcp.
 
Du coup comment je peu faire pour qu'il écrive '12' et pas '1','2' ?
Ou alors si c'est pas possible avec se code comment faire?
 
merci d'avance

n°2298625
DDT
Few understand
Posté le 03-04-2017 à 19:13:06  profilanswer
 

Avec append, je viens de te le montrer. Mais pourquoi tu convertis l'indice en string?


---------------
click clack clunka thunk
n°2298626
qwer5tyi
la patience est une vertue
Posté le 03-04-2017 à 19:14:14  profilanswer
 

je sais pas... surement parce que sa marchais comme sa...

n°2298627
qwer5tyi
la patience est une vertue
Posté le 03-04-2017 à 19:15:24  profilanswer
 

Effectivement sa marche mieux!!!! merci bcp

n°2298704
fred1599
Posté le 04-04-2017 à 23:02:54  profilanswer
 

Plusieurs remarques,
 
1) La variable letters, où l'on est pas obligé de se taper toutes les lettres de l'alphabet...
 

Code :
  1. >>> from string import ascii_lowercase as alphabet
  2. >>> alphabet
  3. 'abcdefghijklmnopqrstuvwxyz'


 
2) Pour séparer les lettres de ton message, on peut directement utiliser la construction d'un objet list
 

Code :
  1. >>> s = 'message'
  2. >>> list(s)
  3. ['m', 'e', 's', 's', 'a', 'g', 'e']


 

n°2298723
h3bus
Troll Inside
Posté le 05-04-2017 à 10:02:52  profilanswer
 

Pour la liste des caractères:

Code :
  1. import string
  2. string.ascii_lowercase


---------------
sheep++
mood
Publicité
Posté le 05-04-2017 à 10:02:52  profilanswer
 

n°2298740
qwer5tyi
la patience est une vertue
Posté le 05-04-2017 à 12:06:40  profilanswer
 

Merci pour l'astuce mais j aimerais pouvoir ajouter des majuscule et de la ponctuation a l'alphabet (ce que j'ai fais) et puis de toute façons je l ai déjà écris donc...
 Sinon pour transformée le string en liste merci sa marche nickel et le code est plus lisible.

n°2298742
fred1599
Posté le 05-04-2017 à 13:20:37  profilanswer
 

Dans ce cas rien de plus simple en python
 

Code :
  1. >>> from string import ascii_letters as alphabet
  2. >>> from string import punctuation
  3. >>> alphabet + punctuation
  4. 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'


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

  Probleme avec un programe python

 

Sujets relatifs
Problème WshShell.AppActivate et RunAs[Python] Parser un CSV vers un format custom
Problème de relation JAVA EEAlignement d'articles.. Problème HTML/CSS
[Python]Utiliser Socket pour app de gestion réseauProblème de mise en relation formulaire\BaseDeDonnée + Erreur.
Aide Programmation pythonje trouve pas le probleme dans le code
Problème script javascriptxpadder probleme
Plus de sujets relatifs à : Probleme avec un programe python


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