0

所以我一直在尝试为我的朋友和我的密码制作一个 python 程序(加入了 2 个不同的密码),我一直在努力让加密不同的字符串变得容易,而无需每次都打开和关闭程序。我在 64 位 Windows 7 计算机上使用 python 3.2。

这是我的代码(也请给我一些完善它的提示):

#!/usr/bin/python

#from string import maketrans   # Required to call maketrans function.

print ("Welcome to the Rotten Bat encription program. Coded in python by Diego Granada")
answer = input("Please enter the password: ")
if answer == 'raindrops':
    print("Password accepted")
else:
    print ("Incorrect password. Quiting")
    from time import sleep
    sleep(3)
    exit()
intab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
outtab = "N9Q2T1VWXYZ7B3D5F8H4JK60n9pq2st1vwxyz7b3d5f8h4jk60"

message = input("Put your message here: ")

print(message.translate(dict((ord(x), y) for (x, y) in zip(intab, outtab))))

print ("Thank you for using this program")

input()
4

1 回答 1

6

良好的编程实践是将您的代码分解为模块化的功能单元 - 例如,一个实际执行密码的函数,一个收集用户输入的函数等。这个想法的更高级和更模块化的版本是面向对象编程 -今天在大多数大型项目和编程语言中使用。(如果你有兴趣,这里有很多学习 OOP 的好资源,比如这个教程。)

最简单的是,您可以将密码本身放入它自己的函数中,然后在每次用户输入消息时调用它。这可以解决问题:

#!/usr/bin/python

print ("Welcome to the Rotten Bat encription program. Coded in python by Diego Granada")
answer = input("Please enter the password: ")
if answer == 'raindrops':
    print("Password accepted")
else:
    print ("Incorrect password. Quiting")
    from time import sleep
    sleep(3)
    exit()

def cipher(message):
    intab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    outtab = "N9Q2T1VWXYZ7B3D5F8H4JK60n9pq2st1vwxyz7b3d5f8h4jk60"
    return (message.translate(dict((ord(x), y) for (x, y) in zip(intab, outtab))))

while True:
    message = input("Put your message here: ")
    print cipher(message)
    print ("Thank you for using this program")

该程序现在将在向用户询问另一条消息时永远循环 - 使用组合键ctrl+c停止程序。

于 2012-09-23T04:21:08.510 回答