2 python
我正在尝试使用python制作一个"Caesar's Cipher".这是我到目前为止所做的.谁能告诉我这是怎么回事?我正朝着正确的方向前进吗?我错过了什么?当我运行程序说例如(josh很酷)我没有得到同一行的密码.我这样看起来像这样main(3)
m
r
v
k
l
v
f
r
r
o
Run Code Online (Sandbox Code Playgroud)
但它把每个字母都放在一个新的界限上.我怎么能这样做它在一条线上?
def main(k):
if k<0 or k>231:
print "complaint"
raise SystemExit
Input = raw_input("Please enter Plaintext to Cipher")
for x in range(len(Input)):
letter=Input[x]
if letter.islower():
x=ord(letter)
x=x+k
if x>122:
x=x-122+97
print chr(x),
if letter.isupper():
x=ord(letter)
x=x+k
if x>90:
x=x-90+65
print chr(x),
Run Code Online (Sandbox Code Playgroud)
我喜欢kaizer.se的答案,但我想我可以使用string.maketrans函数简化它:
import string
first = raw_input("Please enter Plaintext to Cipher: ")
k = int(raw_input("Please enter the shift: "))
shifted_lowercase = ascii_lowercase[k:] + ascii_lowercase[:k]
translation_table = maketrans(ascii_lowercase, shifted_lowercase)
print first.translate(translation_table)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13752 次 |
| 最近记录: |