【问题标题】:How to scramble the letters of a variable in python如何在python中打乱变量的字母
【发布时间】:2018-08-22 09:56:45
【问题描述】:

我试图让你输入一个单词,然后输入一个密码,然后它会输出带有乱码的单词,然后是一个单独的程序来解码它。我曾尝试使用 Import Random 但它没有奏效。我在网上找了大约一个小时,仍然没有找到任何东西。这是我到目前为止的代码。

ss = raw_input ("Enter Plain Text Here:  ")
password = raw_input ("Enter the Password here:  ")
RealPassword = "Test Password"
if password == RealPassword:
    print "Password Accepted!"
    Var1 = (ss[1])
    Var2 = (ss[2])
    Var3 = (ss[3])
    Var4 = (ss[4])
    Var5 = (ss[5])
    Var6 = (ss[6])
    Var7 = (ss[7])
    Var8 = (ss[8])
    Var9 = (ss[9])
    Var10 = (ss[10])
    Var11 = (ss[11])
    Var12 = (ss[12])
    Var13 = (ss[13])
    Var14 = (ss[14])
    Var15 = (ss[15])
    Var16 = (ss[16])
    Var17 = (ss[17])
    print Var1 + Var2 + Var3 + Var4 + Var5 + Var6 + Var7 + Var8 + Var9 
else:
    print "Wrong"

【问题讨论】:

  • 您必须拥有编码功能的逆向工程版本才能对其进行解码。除此之外,您应该在发布之前尝试创建一个用于编码和解码的函数,以便我们可以纠正您的错误,而不是为您创建代码。
  • 嘿,OP。为了澄清,您正在寻找一个以某种方式对单词进行编码的程序,以及另一个从您的编码单词中解码单词的程序,对吗?您要寻找的编码/解码有多复杂?
  • @PeterDolan 我只是在寻找简单的编码,但每次都必须不同。例如纯文本是:你好。第一次输出:elHlo。下一次它输出:oHell。等等..
  • 嗯,解码器怎么会知道编码器使用的是什么编码方式呢?一些东西也会被传回吗?让我知道这是否有意义
  • @PeterDolan 我知道你的意思。它可能会输出加扰的文本,然后是解码器使用的“密钥”?这听起来有点牵强,但也许有可能?

标签: python variables decode encode scramble


【解决方案1】:

这是一个基本的答案。有一个编码函数传回一个“密钥”(在我的代码中称为seed)供解码器读取。这利用了两件事:python 中的 shuffle 函数,以及 python 中的随机数生成器实际上是伪随机的这一事实——它们实际上具有可重复的行为。

另外,感谢 this post 中的 Hugh,我在制作答案时使用了很多。

import random

def encoder(word):
    seed = random.randint(1,100)
    random.seed(seed)
    l = list(word)
    random.shuffle(l)
    scrambled_word = ''.join(l)
    return seed, scrambled_word

def decoder(seed, scrambled_word):
    random.seed(seed)
    order = list(range(len(scrambled_word)))
    random.shuffle(order)

    original_word = [0]*len(scrambled_word)
    for index,original_index in enumerate(order):
        original_word[original_index] = scrambled_word[index]
    print(''.join(original_word))


original_word = "hello"

seed, scrambled_word = encoder(original_word)
print(scrambled_word)
decoder(seed, scrambled_word)

如果有什么不明白的地方,请随时提出任何问题。

【讨论】:

  • 我怎么做的
  • original_word = "hello" 变成原始的_ipnut?
  • 假设您使用的是 python2,original_word = raw_input("Enter Plain Text Here: ")。如果您使用的是 python3,original_word = input("Enter Plain Text Here: ")
猜你喜欢
  • 1970-01-01
  • 2012-01-27
  • 2023-03-17
  • 2015-10-28
  • 2023-01-03
  • 1970-01-01
  • 2013-01-01
  • 2018-08-13
  • 1970-01-01
相关资源
最近更新 更多