IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Codage César


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Par défaut Codage César
    Bonjour, je dois développer un codage de césar en python et je bloque dans mon programme le voici:
    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
    # Fonction décalage
     
    def decalage(alphabet,dec):
        alphabetcod=[]
        for i in range(0,25):
            alphabet=alphabet[i]+dec
        return alphabetcod
     
     
    # Fonction codage
     
    def codage(texte,alphabetcod):
        for i in range(0,len(texte)):
            cod=texte[i]+alphabetcod
        return cod
     
     
    # Fonction décodage
     
     
    def decodage(texte,alphabetcod):
        for i in range(0,len(texte)):
            decod=texte[i]+alphabetcod
        return decod
     
     
     
    # Programme principal
     
    alphabet=['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']
    texte=input("Entrer un texte, en enlevant toute ponctuation et majuscules: ")
    dec=input("Choisissez une valeur de décalage pour coder ou décoder le texte: ")
    code_decod=input("Voulez vous coder (True) ou décoder (False) votre texte? ")
    if code_decod==True:
        print(decalage,codage)
     
    else:
        print(decalage,decodage)


    Quelqu'un pourrait m'aider svp ?

  2. #2
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par IlovePython Voir le message
    Bonjour, je dois développer un codage de césar en python et je bloque dans mon programme le voici:

    Quelqu'un pourrait m'aider svp ?
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> def ma_fct():
    	return 1
     
    >>> print(ma_fct)
    <function ma_fct at 0x7f2f14930ea0>
    >>> print(ma_fct())
    1
    >>>
    Oui?

    Clodion

    PS: attention aux noms de variables et aux enchaînements de fonctions!!
    L'un des avantages des fonctions est qu'elles peuvent être testées individuellement, et ce serait, sans doutes, très efficace pour régler certains problèmes.

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    En plus de la correction de Clodion il y a d'autres problèmes avec les input

    Les input() retournent des strings, donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Python 3.2.3 (default, Feb 27 2014, 21:33:50) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> c = input('Entrez True ou False: ')
    Entrez True ou False: True
    >>> c == True
    False
    >>> c == 'True'
    True
    Pareil pour les autres.

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Par défaut
    Citation Envoyé par Clodion Voir le message
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> def ma_fct():
    	return 1
     
    >>> print(ma_fct)
    <function ma_fct at 0x7f2f14930ea0>
    >>> print(ma_fct())
    1
    >>>
    Oui?

    Clodion

    PS: attention aux noms de variables et aux enchaînements de fonctions!!
    L'un des avantages des fonctions est qu'elles peuvent être testées individuellement, et ce serait, sans doutes, très efficace pour régler certains problèmes.

    Je comprend pas ce que vous me dite... nous avons changer notre programme :


    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
    # Fonction codage
    # Données:
    # Résultats: le programme affichera le texte préalablement
    #rentré, codé dans le langage César
     
    def codage(texte,alphabet): 
        for i in range(0,texte[i+1]):
            cod=alphabet[(i+decalage)%26]
        return cod
     
     
    # Fonction décodage
    # Données:
    # Résultats: le programme affichera le texte préalablement
    # rentré, décodé dans le langage César
     
    def decodage(texte,alphabet):
        for i in range(0,len(texte)):
            decod=alphabet[(i-decalage)%26]
        return decod
     
     
    # Programme principal
     
    alphabet=['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']
    texte=input("Entrer un texte, en enlevant toute ponctuation et majuscules: ")
    decalage=int(input("Entrez une valeur de décalage : "))
    code_decod=input("Voulez vous coder (True) ou décoder (False) votre texte? ")
    if code_decod==True:
        print(codage(texte, alphabet))
    else:
        print(decodage(texte, alphabet))
    Toujours un problème, maintenant il ne nous affiche qu'une seule lettre codée.... merci de vos réponses sinon!

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Salut,

    Citation Envoyé par IlovePython Voir le message
    Toujours un problème, maintenant il ne nous affiche qu'une seule lettre codée.... merci de vos réponses sinon!
    C'est "normal", lisez votre fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Fonction codage
    # Données:
    # Résultats: le programme affichera le texte préalablement
    #rentré, codé dans le langage César
     
    def codage(texte,alphabet): 
        for i in range(0,texte[i+1]):
            cod=alphabet[(i+decalage)%26]
        return cod
    la variable "cod" est mise à jour à chaque itération avec le caractère calculé avec "alphabet[(i+decalage)%26]".
    A la sortie de la fonction, "cod" contiendra le dernier caractère calculé et çà ne pourra pas retourner "plus".
    Ce que vous voulez, c'est ajouter le caractère calculés à chaque itération et retourner l'ensemble en sortie.
    Pour faire çà, il faut initialiser "cod" à la chaine vide avant d'entrer dans la boucle puis, dans la boucle, faire cod = cod + alphabet i.e. "ajouter".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par IlovePython Voir le message
    Citation Envoyé par IlovePython Voir le message
    Je comprend pas ce que vous me dite...
    Bonsoir,
    Dans le premier script, les fonctions n'étaient pas appelées… D'où les deux exemples pour différencier l'affichage du résultat de la fonction ie: "print(decalage(params))" (qui affiche le résultat de la fonction) et l'affichage de sa représentation ie: "print(decalage)".

    Citation Envoyé par IlovePython Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # Fonction décalage
     
    def decalage(alphabet,dec):
        alphabetcod=[]
        for i in range(0,25):
            alphabet=alphabet[i]+dec
        return alphabetcod
    Ici, la variable "alphabetcod" est initialisée "alphabetcod=[]" mais c'est le paramètre alphabet qui est utilisé au sein de la fonction.

    D'où le conseil de faire quelques essais sur ces fonctions, individuellement, afin de pouvoir observer ce qui produit lors de leur manipulation.
    En particulier en utilisant des "print" afin de surveiller chacune des variables.
    Ceci aurait permis de décortiquer chacune des fonctions et de régler l'erreur pointée par wiztricks… et donc de comprendre

    D'autre part, VinsS a fait une remarque… très pertinente (évidemment ;-))…

    Clodion

Discussions similaires

  1. Codage césar/vigenère
    Par kplg59 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/05/2014, 08h04
  2. [API] Codage d'un moniteur de messages debug
    Par Pierre Castelain dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 15/01/2004, 19h47
  3. [Interbase] [Trigger] Codage
    Par AnestheziE dans le forum InterBase
    Réponses: 9
    Dernier message: 06/11/2003, 14h51
  4. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 11h00
  5. codage objet
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 22/08/2002, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo