请帮助我的程序(初学者)

时间:2013-03-23 03:49:54

标签: python python-2.7

我需要编写一个加密程序,而且我正在完成任务。下面列出了本部分的说明。如果他们没有输入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

2 个答案:

答案 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()