0

代码:

a=26
b=25
c=24
d=23
e=22
f=21
g=20
h=19
i=18
j=17
k=16
l=15
m=14
n=13
o=12
p=11
q=10
r=9
s=8
t=7
u=6
v=5
w=4
x=3
y=2
z=1
print ("Please print string:")
str1 = str(raw_input(">"))
print str1

但是如何让它转换str1成上面的整数呢?顺便说一句,我是个新手。

4

3 回答 3

2

一个班轮,因为我很无聊:

print ''.join([str(123-ord(l))for l in str(raw_input("Print String:\n>"))])

然而,这可能是你想要的更多:

print ("Please print string:")
str1 = str(raw_input(">"))

offset = 1
values = [ord(l) + offset for l in str1]

print ''.join([chr(v) for v in values])

这会为您的加密常量偏移字符串中的每个字母创建一个 ascii 值列表,然后将它们转换回字符(现在是偏移量)并将列表连接成一个字符串。

或以函数形式:

print ("Please print string:")
str1 = str(raw_input(">"))

def encrypt(string,offset):
    return ''.join([chr(ord(l) + offset) for l in string])

print encrypt(str1,2)

然后,您可以对任何字符串调用 encrypt 并将其偏移您想要的值。使用否定的偏移值调用 encrypt(1 变为 -1 等)以对其进行解密。

于 2013-11-04T00:11:32.587 回答
0

显然,我无法使用 builtin 执行此操作string.translate,但以下 2 可以正常工作。

import string
# Construct a dictionary for required translation
translation = {}
for index, char in enumerate(string.ascii_lowercase):
    translation[char] = 26 - index

# Function to translate given string
def translate(user_string):
    return "".join([str(translation[c]) for c in user_string])

user_string = raw_input("Enter your string - ")
print translate(user_string)

注意 -string.ascii_lowercase'abcdefghijklmnopqrstuvwxyz'

如果您不想将翻译的内容转换为字符串,您可以这样做

from __future__ import print_function
import string

translation = {}
for index, char in enumerate(string.ascii_lowercase):
    translation[char] = 26 - index

user_string = raw_input("Enter your string - ")
for c in user_string:
    print(translation[c],end="")
于 2013-11-04T00:03:15.327 回答
0

问题已经得到解答,但一般来说,如果您希望仍然使用您编写的代码,您会想要使用字典:

letters = {"a": 26, "b": 25...}
return ''.join([letters[item] for item in str(raw_input("Print String:\n>"))])
于 2013-11-04T00:20:31.600 回答