我需要编写一个加密程序,而且我正在完成任务。下面列出了本部分的说明。如果他们没有输入e,d或q,我如何告诉python重做while循环?我的q条目工作正常,但正如您所看到的,我需要帮助尝试创建一个案例,如果用户输入另一个角色。
确保用户使用while循环输入“e”或“d”或“q”以使其重做任何错误条目。然后StartMenu()应该将它们的选择返回到main()函数,其中main()的变量应该捕获该返回值。
def PrintDescription():
print 'This program encrypts and descrypts messages using multiple \
encryption methods.\nInput files must be in the same directory as this program.\
\nOutput files will be created in this same directory.'
def StartMenu():
print 'Do you wish to encrypt or decrypt?'
print '<e>ncrypt'
print '<d>ecrypt'
print '<q>uit'
def main():
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.?! \t\n\r"
PrintDescription()
while True:
StartMenu()
a = raw_input("")
if a!='e' and a!='d' and a!='q':
print 'You must enter e, d or q'
False
break
if a == 'q':
break
答案 0 :(得分:2)
只是为了放弃评论中的扩展对话,这应该满足您的所有要求:
def main():
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.?! \t\n\r"
PrintDescription()
a = None
while a not in ('e', 'd', 'q'):
if a:
print "Try again!"
else:
StartMenu()
a = raw_input("")
if a == 'q':
sys.exit(0)
发生了什么......
第一次通过main函数时,a将设置为None。然后将启动while循环,表示继续运行,直到a是所需的三个字母之一。当然,第一次通过a是None,所以它将进入while循环。由于a为None,if a:
的计算结果为False
。因此将跳过该块。但是,else将被执行并将打印StartMenu。然后,您将读取用户输入并决定循环重新开始时要执行的操作。如果满足标准(即a是'e','d'或'q'中的一个,那么它将不会再次迭代循环。但是,如果a不在三个字母中,那么另一个迭代循环将开始。但是,这次是if a:
评估为True
的东西。现在打印“再试一次!”并且不打印StartMenu。从现在开始这将继续输入三个字母。
答案 1 :(得分:1)
while raw_input("") not in ['e', 'd', 'q']:
berate_user()