-2

1 から 26 までの数字のリストをランダムな順序で生成し、そのリストを使用して特定の単語を「暗号化」して、アルファベットの n 番目の文字が n 番目の文字にマップされるようにするプログラムを作成しようとしています。ランダム化されたリストの番号。例:

ランダム化されたリストは次のとおりです。

[8,2,25,17,6,9,12,19,21,20,18,3,15,1,11,0,23,14,4,7,24,5,10,13,16,22]

これは、単語act[8,25,7]になり、単語が にxyzzyなることを意味し[13,16,22,22,16]ます。

次のコードがありますが、続行する方法がわかりません。

#8a
def randomalpha():
    a=[0]*26
    count = 0
    while count < 25:
        r = randrange(0,26)
        if r not in a:
            a[count] = r
            count += 1
    return(a)
print(f())
#8b
ls=['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']
def encrypt(alphabet):
    a=randomalpha()
    count=0
    b=input('enter a word')
    for i in b:               #not sure if i am ok up to here but this is when i got really confused 


print(encrypt(ls))
4

3 に答える 3

2

私の見解:

from string import ascii_lowercase
from random import shuffle

def char2num(chars):
    r = range(len(chars))
    shuffle(r)
    return dict(zip(chars, r))

def encrypt(s, lookup):
    return ' '.join(str(lookup[ch]) for ch in s)

print encrypt('cat', char2num(ascii_lowercase))
于 2013-04-14T00:38:52.557 に答える
0
import random
import string

def randomalpha():
    nums, result = range(26), [] # [0, 1, 2, 3, ... --> 25]
    random.shuffle(nums)
    for i in range(26):
        result.append(nums.pop())
    return result

def encrypt(s):
    alphabet = list(string.lowercase) # ['a', 'b', 'c', ... --> 'z']
    key = dict(zip(alphabet, randomalpha()))
    return ''.join([str(key[ltr]) for ltr in s])

参考文献:

于 2013-04-14T00:25:35.373 に答える