Python字母交换

时间:2013-10-29 23:20:25

标签: python-2.7

我正在制作一个程序,为了好玩而扰乱文字,我遇到了障碍。我试图切换字符串中的所有字母,我不太确定如何去做(hello = ifmmp)。我环顾四周,无法找到这个具体问题的任何答案。任何帮助都会很棒!

4 个答案:

答案 0 :(得分:0)

你想要一个简单的随机密码吗?以下内容适用于所有小写输入,并且可以轻松扩展。

import random
import string

swapped = list(string.lowercase)
random.shuffle(swapped)
cipher = string.maketrans(string.lowercase, ''.join(swapped))

def change(val):
    return string.translate(val, cipher)

答案 1 :(得分:0)

您可以修改此示例以实现所需。这里字符串中的每个元音都被其元音位置替换:

from string import maketrans   # Required to call maketrans function.

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";
print str.translate(trantab);


# this is the output
"th3s 3s str3ng 2x1mpl2....w4w!!!"

答案 2 :(得分:0)

与string.translate函数结合使用maketrans。此代码首先从您正在加扰的字母中删除单词中的字母。如果你只想要小写,只使用string.lowercase而不是string.letters。

>>> import string, random
>>> letters = list(string.letters)
>>> random.shuffle(letters)
>>> letters = "".join(letters)
>>> word = 'hello'
>>> for letter in word:
...     letters = letters.replace(letter, '')
...
>>> transtab = string.maketrans(word, letters[:len(word)])
>>> print word.translate(transtab)
XQEEN

答案 3 :(得分:0)

你似乎追随的“加扰”被称为Caesar's cipher,右移为1.以下Python将实现你所追求的目标:

def caesar(str):
  from string import maketrans
  fromalpha = "abcdefghijklmnopqrstuvwxyz"
  # Move the last 1 chars to the start of the string
  toalpha = fromalpha[1:] + fromalpha[:1]
  # Make it work with capital letters
  fromalpha += fromalpha.upper()
  toalpha += toalpha.upper()
  x = maketrans(fromalpha, toalpha)
  return str.translate(x)

如果您对一般情况感兴趣,此功能将完成这项工作。 (注意,传统上用左移而不是右表示凯撒密码。)

def caesar(str, lshift):
  from string import maketrans
  fromalpha = "abcdefghijklmnopqrstuvwxyz"
  toalpha = fromalpha[-lshift:] + fromalpha[:-lshift]
  fromalpha += fromalpha.upper()
  toalpha += toalpha.upper()
  x = maketrans(fromalpha, toalpha)
  return str.translate(x)