CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python Code Cesar

_Pytchoun
_Pytchoun
Niveau 67
16 février 2016 à 22:07:11

Bonjour

Écrire une fonction qui retourne un mot (donné en argument) chiffré selon le Code César avec la clé (donnée
en argument).
- Le mot est donné en argument est tout en majuscule, sans accent ni caractère spécial.
Votre script doit comporter en dernière ligne le code test suivant qui affiche le renvoi de votre fonction :
print(nom_de_votre_fontion("EUROPE",5))

def cesarC(mot, cle):
    enc = ""
    l = len(mot)
    mot = mot.replace(" ", "")
    mot = mot.upper()

    for i in range(l):
        asc = ord(mot[i])
        mot = mot.replace(" ", "")
        if asc >= 65 or asc <= 90:
            asc += cle
            if asc > 91:
                asc -= 26
            if asc < 65:
                asc += 26
        enc += chr(asc)

    return enc

print(cesarC("europe", 5))

Y a plus simple ou pas svp ?

TintinMage
TintinMage
Niveau 10
16 février 2016 à 23:22:00

Oui y'a plus simple, en une seule ligne [[sticker:p/1kki]]

_Pytchoun
_Pytchoun
Niveau 67
16 février 2016 à 23:25:34

Le 16 février 2016 à 23:22:00 TintinMage a écrit :
Oui y'a plus simple, en une seule ligne [[sticker:p/1kki]]

Montre[[sticker:p/1kki]]

TintinMage
TintinMage
Niveau 10
16 février 2016 à 23:29:56
def cesar(mot, key):
    return ''.join([chr(ord(i) + key) if 65 <= ord(i) + key <= 90 else chr(ord(i) + key + (1 if key < 0 else -1) * 26) for i in mot.upper()])
MrGreez94
MrGreez94
Niveau 10
16 février 2016 à 23:30:45

Premièrement tu appelles cette instruction beaucoup trop de fois

mot = mot.replace(" ", "")

Alors qu'une fois exécuté, le faire d'autres fois est complètement inutile. A cela s'ajoute que les espaces sont conservé dans le chiffrement de César

Ensuite je comprends pas l'intérêt de l'imbrication de if, tu as juste à te reporter à la formule du chiffrement qui est :

https://image.noelshack.com/fichiers/2016/07/1455659808-ss-2016-02-16-at-10-56-20.png

En changeant tout ça, t'arrives à un code ressemblant à ça :

def cesarC(mot, cle):
    enc = ""
    mot = mot.upper()

    for lettre in mot:     
        pos = ord(lettre) - 65   #position dans l'alphabet [0:25] 
        posC = (pos +  cle) % 26 #position dans l'alphabet après chiffrement
        lettreC = chr(posC + 65) #lettre après chiffrement
        enc += lettreC
    return enc

print(cesarC("europe", 5))
Message édité le 16 février 2016 à 23:32:50 par MrGreez94
_Pytchoun
_Pytchoun
Niveau 67
16 février 2016 à 23:45:16

Je vais regarder vos programmes merci.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment