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 :

Traduire code Pascal en Python - Chiffrement par décalage


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2020
    Messages : 1
    Par défaut Traduire code Pascal en Python - Chiffrement par décalage
    Code Pascal : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    program Cryptage;
    uses wincrt;
    var M:String;
    p:integer ;
    Function valide(M:string):boolean;
    Var i:integer;
    ok:boolean;
    begin
    ok:=true;
    if m='' then ok:=false
    Else
    Begin
    i:=0;
     
    Repeat
     i:=i+1;
     if not (M[i] in [' ','A'..'Z','a'..'z']) then ok:=false;
    until (ok=false) or (i=Length(M))
    end;
    valide:=ok;
    end;
    Procedure saisir(var M:string);
    Begin
    Repeat
    write('Donner le message à crypter : ');
    readln(M);
    until valide(M);
    end;
    function nbmot(M:string):integer;
    Var    i,nb:integer;
    Begin
    i:=0;  nb:=0;
    Repeat
     i:=i+1;   
    if  (upcase(M[i]) in ['A'..'Z']) then nb:=nb+1;
     
     while (i<=length(m)) and (upcase(M[i]) in ['A'..'Z']) do
     i:=i+1;
    until (i>=length(M));
     
    nbmot:=nb;
    end;
     
    function Crypter(M:string; p:integer):string;
    Var     code,i:Integer;
    Begin
     for i:=1 to Length(M) Do
    	Begin
    	code:= ord(M[i])+p;
     if M[i] in ['a'..'z'] then if code>ord('z') then   code:=code-26;
      if M[i] in ['A'..'Z'] then if code>ord('Z') then   code:=code-26;
     if M[i]<>' ' then M[i]:=chr(code);
     end;
    crypter:=M;
    end;
     
    Begin
    saisir(M);
    p:=Nbmot(M);
    writeln(p);
    WriteLn(Crypter(M,p)); 
    end.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    "Bonjour", "merci", "au revoir" c'est quand tu veux quoi. Et manifestement là tu veux pas.

    Bon, concernant ton truc oui tous ici pourrions le traduire en Python, d'autant plus que c'est franchement pas compliqué vu que d'une part la syntaxe de ce pseudo-code est très très proche de Python (exemple for i:=1 to Length(M) Do deviendra for i in range(1, len(M) + 1):) et que d'autre part ça ressemble à un chiffrement par décalage (chiffre de César) ce qui est assez facile à trouver sur le net. Mais est-ce que c'est ça pour toi "aider" ? Faire faire ton travail par les autres ?

    Donc montre-nous ce que toi tu fais avec ce code et là on te dira si ça va si ça ne va pas et pourquoi ça ne va pas. Accessoirement la fonction "nbmot" ne me semble pas compter le nombre de mots mais le nombre de caractères et de toute façon n'est pas utilisée.

    Et
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 214
    Par défaut
    hello,
    Citation Envoyé par Sve@r Voir le message
    oui tous ici pourrions le traduire en Python, d'autant plus que c'est franchement pas compliqué vu que d'une part la syntaxe de ce pseudo-code est très très proche de Python (exemple for i:=1 to Length(M) Do
    heu Sve@r c'est du pascal . Je participe au forum Lazarus (free pascal) sur developpez.net et donc de temps en temps je code dans ce langage.

    Ami calmant, J.P

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    heu Sve@r c'est du pascal
    Ca roule. Je connais pas la syntaxe Pascal donc j'ai pensé à du pseudo-code et quand je suis intervenu la mention "Pascal" n'était pas encore présente dans le titre (probablement rajoutée par un modo)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Pour ce que j'y ai lu en diagonale, en Python, çà devrait s'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import string
     
    mots = input('mots: ')
    n = len([ z for z in mots if 'A' <= z <= 'Z']) % 26
     
    S = string.ascii_lowercase, string.ascii_uppercase
    D = list(z[n:] + z[:n] for z in S)
     
    tt = str.maketrans(''.join(S), ''.join(D))
    print (mots.translate(tt))
    mais on devrait pouvoir faire plus court.

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

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    çà devrait s'écrire:
    Bigre
    Il y a juste une erreur sur le calcul de la taille du mot car il faut prendre aussi en compte les minuscules => if 'A' <= z <= 'Z' or 'a' <= z <= 'z'.

    Citation Envoyé par wiztricks Voir le message
    mais on devrait pouvoir faire plus court.
    Oui, en utilisant string.ascii_letters dans le calcul de n => if z in string.ascii_letters. tt pourrait aussi être supprimé.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/06/2006, 18h54
  2. qui peut m'aider sur un fichier bizarre
    Par etienne.bo dans le forum InterBase
    Réponses: 3
    Dernier message: 17/06/2006, 21h35
  3. hijackthis Qui peut m'aider Merci
    Par winow dans le forum Sécurité
    Réponses: 4
    Dernier message: 21/02/2006, 14h17

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