如何在python中循环回我的程序的一部分?

时间:2012-09-23 04:10:34

标签: python loops

所以我一直在努力为一个cypher制作一个python程序我的朋友和我做了(加入了两个不同的密码)并且我一直试图让它很容易加密不同的字符串,而不是每个都打开和关闭程序时间。我在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()

1 个答案:

答案 0 :(得分:6)

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

最简单的说,您可以将密码本身放入其自己的功能中,然后在每次用户输入消息时调用它。这样就可以了:

#!/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 来停止程序。