Python 与加密混淆

Python 与加密混淆,python,Python,我正试图编写一个程序,生成一个随机顺序从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],单词xyzy变成[13,16,22,22,16] 我有以下代码,但我不确定如何继续: #8a def randomalpha(): a

我正试图编写一个程序,生成一个随机顺序从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]
,单词
xyzy
变成
[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))
#8a
def randomalpha():
a=[0]*26
计数=0
当计数小于25时:
r=随机范围(0,26)
如果r不在a中:
a[计数]=r
计数+=1
报税表(a)
打印(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加密(字母表):
a=随机α()
计数=0
b=输入('输入一个单词')
因为我在b:#不确定我是否可以到这里,但这是我真正困惑的时候
打印(加密(ls))
参考资料:

    • 我对它的看法:

      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))
      

      由于今天提出的问题,在此添加此内容:


      现在,您所要做的就是索引列表,以获得字母和相应的唯一随机数。例如,alpha[0]为您提供“a”,numLst[0]为您提供相应的唯一编号

      您的
      randomalpha
      函数很可能会产生重复的values@F3AR3DLEGEND你不能让它工作,我得到了这个回溯(最近一次调用最后):文件“C:\Users\Ian\Downloads\lab8-1.py”,第146行,在print(encrypt())文件“C:\Users\Ian\Downloads\lab8-1.py”,第143行,在encrypt alphabet=list(string.lowercase)中NameError:全局名称“字符串”不正确defined@IanBerke你必须做
      导入字符串
      (复制我的整个答案并尝试)。@F3AR3DLEGEND不完全(我发布了错误的版本)-它更通用-不会对
      做一些奇怪的事情。pop
      ,不一定会将
      字母表
      转换为列表,并在
      中使用生成器而不是列表comp。join
      您的问题似乎不完整和/或非常模糊。请重写你的问题,让每个人都明白你到底想达到什么目的,问题是什么。所以从我的第一个代码开始,返回一个随机的非重复整数列表。。。然后我在下一个代码中输入ls,这是一个字母表,所以说第一个随机列表开始[3,8,10…3=a 8=b 10=c,所以如果我在第二个代码“abc”中输入,它将返回[3,8,10]@KennyV这样做有帮助吗?从我的第一个代码开始,返回一个随机的非重复整数列表…然后我在下一个代码中输入ls,这是一个字母表,所以说第一个随机列表开始了[3,8,10…3=a 8=b 10=c,所以如果我将输入放入第二个代码“abc”,它将返回[3,8,10]如果
      encrypt()
      遇到非小写和/或非字母字符,会发生什么情况?您使用的是什么版本的Python?@martineau 3.2.3我们应该只输入小写非数字字符
      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))
      
       import random, string
          alpha = list(string.ascii_lowercase)
          numLst = list()
          while len(numLst) != 26:
              num = random.randint(1,26)
              if (num not in numLst):
                  numLst.append(num)