2013-08-17 25 views
0

我今天在一个树莓派上启动了Python,并且我想创建一个受密码保护的菜单。除了在我输入选项后不断出现的选项之外,它都可以工作。Python正在重复

这是我的代码任何人都可以告诉我它有什么问题,我已经把它全部留在了这里,这样你们就可以看到什么是错的。就像我说的,我得到第一个,关机或项目,但是当我输入1或2时,它重复它,忽略if声明。

ans = True 

while ans: 

    print(""" 

    1. Shutdown 
    2. Items 

    """) 

    ans=input("Please enter a number: ") 

    if ans == "1": 
     exit() 
    elif ans == "2": 

     pa=input("Please Enter Password: ") 

     if pa == "zombiekiller": 

      print(""" 

      1. Pi password 
      2. Return To Menu 

      """) 

     else: 
       print("You Have Entered An Inccorect Password. Terminating Programm") 
       import time 
       time.sleep(1) 
       exit() 
+0

什么是'exit'定义为? –

+0

对不起,你的意思是定义为,就像我说的那样,直到今天才开始,所以我真的困惑于高超的术语 –

+1

Python交互式解释器确实将'exit'定义为函数,但它不适用于一般脚本(它会给你改为'NameError')。 –

回答

0

如果你正在使用python 2.7,input将尝试和解释你的输入作为一个python表达式,返回数字1,而不是字符串"1"。始终使用raw_input从用户处获取字符串。

在python 3中,旧的input已被删除,旧的raw_input已被重命名为input

+0

ohh即时通讯使用2.7我相信谢谢,我加入了raw_input来代替或输入,但现在它停止python文件,并让我在没有错误或任何东西的情况下输入python shell –

+0

@StevenSharman:你没有提供足够的信息。究竟你给了什么输入,会发生什么? – Eric

+0

等待它的工作,但它表示想要杀的程序,即时与我确定谢谢你 –

2

exit什么。只要把它放在一行上就可以解除名称的引用,但不会引用它。也许你打算叫它?

exit() 

要跳出一个while循环中,您也可以使用break,这是一种说法:

while True: 
    print('Ending this loop') 
    break 
+0

哦,好的,谢谢,但它仍然没有从选项中更改,也没有退出文件 –

+0

我可以给这个去,但我不是增加一个循环的服装 –

+1

@StevenSharman:你有'while ans:'在顶部你的脚本。 :-) –