質問

Basically I want the ciphered phrase as the output with both uppercase being ciphered to uppercase and lowercase being ciphered to lowercase but not any spaces or symbols are ciphered. It can encrypt a paragraph consisting of all upper case and a paragraph consisting of all lower case but not a mix of the two. here is what I have.

def encrypt(phrase,move):
encription=[]
for character in phrase:
    a = ord(character)
    if a>64 and a<123:
        if a!=(91,96):
            for case in phrase:
                        if case.islower():
                            alph=["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"]
                            dic={}
                            for i in range(0,len(alph)):
                                dic[alph[i]]=alph[(i+move)%len(alph)] 
                                cipherphrase=""  
                            for l in phrase:  
                                if l in dic:  
                                    l=dic[l]  
                                cipherphrase+=l
                                encription.append(chr(a if 97<a<=122 else 96+a%122))
                            return cipherphrase
                        else:
                            ALPH=["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"]
                            DIC={}
                            for I in range(0,len(ALPH)):
                                DIC[ALPH[I]]=ALPH[(I+move)%len(ALPH)]
                                cipherphrase=""
                            for L in phrase:
                                if L in DIC:
                                    L=DIC[L]
                                cipherphrase+=L
                                encription.append(chr(a if 97<a<=122 else 96+a%122))
                            return cipherphrase

I know its a lot but as you can see im not very good

役に立ちましたか?

解決

import string

def caesar_cipher(msg, shift):
    # create a character-translation table
    trans = dict(zip(string.lowercase, string.lowercase[shift:] + string.lowercase[:shift]))
    trans.update(zip(string.uppercase, string.uppercase[shift:] + string.uppercase[:shift]))

    # apply it to the message string
    return ''.join(trans.get(ch, ch) for ch in msg)

then

caesar_cipher('This is my 3rd test!', 2)     # => 'Vjku ku oa 3tf vguv!'

他のヒント

import string
def rot_cipher(msg,amount):
    alphabet1 = string.ascii_lowercase + string.ascii_uppercase
    alphabet2 = string.ascii_lowercase[amount:] + string.ascii_lowercase[:amount]\
                + string.ascii_uppercase[amount:] + string.ascii_uppercase[:amount]
    tab = str.maketrans(alphabet1,alphabet2)
    return msg.translate(tab)

print(rot_cipher("hello world!",13))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top