首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Python) Caesar Cipher未运行

(Python) Caesar Cipher未运行
EN

Stack Overflow用户
提问于 2021-02-18 18:12:35
回答 1查看 67关注 0票数 0

我是一个绝对的初学者,所以请原谅我在编码方面的愚蠢。忽略法国人

代码语言:javascript
复制
min='abcdefghijklmnopqrstuvwxyz'
maj='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

def CoderCesar(txt,clef):
  crypt='' #string pour message crypté
  txt='' #string 
  for c in txt: #pour chaque caractere
    index=min.find(c) #regarder s'il appartient a l'alphabet en minuscule
    if index==False: #si ce n'est pas le cas
      index=maj.find(c) #vérifier s'il appartient alors a l'alphabet majuscule
      if index==False: #si le caractere n'est pas dans l'alphabet, 
        crypt+=c #le laisser et l'incrémenter tel quel dans le message crypté
      else: #si c'est une lettre majuscule
        cryptindex=index+clef #le nouvel indice est égal a l'indice de la lettre + plus la clé
        cryptindex%=len(maj) #revenir au début de la liste si l'indice dépasse la lettre 'z'
        crypt+=maj[cryptindex] # ajouter le caractere au message crypté
    else: #si c'est bien une lettre minuscule, faire exactement le meme proces qu'avant, en remplacant la liste majuscule par minuscule
      cryptindex=index+clef
      cryptindex%=len(min)
      crypt+=min[cryptindex]
  print("original:",txt)
  print("message crypt:",crypt)

CoderCesar(txt='Super! je sais coder ce message',clef=19)

EN

回答 1

Stack Overflow用户

发布于 2021-02-18 18:16:26

您在函数开始时将txt重新初始化为一个空字符串,因此您传入的字符串("Super ! ...")将被覆盖。

删除

代码语言:javascript
复制
txt = ""

线路。

编辑:这是你的代码的一个简化版本,可以做到这一点。

代码语言:javascript
复制
min = "abcdefghijklmnopqrstuvwxyz"
maj = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"


def caesar_cipher(txt, key):
    crypt = ""
    for c in txt:  # for each character in source...
        for charlist in (min, maj):  # for each character list...
            index = charlist.find(c)
            if index == -1:
                continue  # Character c not found in this list
            crypt_index = (index + key) % len(charlist)
            crypt += charlist[crypt_index]
            break  # did encrypt character, break from loop and don't run below else
        else:  # Did not break from the loop, not a regular character
            crypt += c
    return crypt


message = "Super! je sais coder ce message"
clef = 25
crypt = caesar_cipher(txt=message, key=clef)
print(message)
print(crypt)
decrypt = caesar_cipher(txt=crypt, key=-clef)
print(decrypt)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66257817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档