当我希望它停止时,“如果选择”在程序中调用更多代码

时间:2013-11-25 11:02:49

标签: python

我的代码是如果选择==“1”打印的代码比我想要的还要多。我不能使用break,因为我希望用户能够输入正确的密码。之前有一些代码显示了一个输入屏幕并包含choice = input(“choice:”)

这就是我所拥有的

# password
if choice == "1":
    print ("Requires Password")

#open the entire text file 
if choice == "password": 
    fp = open('answers.txt')
    while 1:
        line = fp.readline()
        if not line:
            break
        print (line)

 #quiz programming
 #generate a random keyword
elif choice == "2":
     input("You Ready? Press Enter Then")
print ('''

 Here is your Keyword''')
import random
with open('keywords.txt') as f:
       a = random.choice(list(f)).strip() #.strip cleans the line \n problem
       print ("    ")
       print ("------", a)

使用此代码,我希望当用户输入1时,“需要密码打印”,但这就是我得到的。

choice: 1
Incorrect option
Requires Password


     Here is your Keyword

------ haemoglobin

     Now press enter for your definitions

如何停止要求密码并允许用户输入密码。还有不正确的选项,在代码中显示,我无法摆脱它。

4 个答案:

答案 0 :(得分:2)

我怀疑在您的代码中,您应该在获取raw_input时使用input而不是choice

choice = raw_input("Choose an option").strip()

答案 1 :(得分:1)

# password
if choice == "1":
    print ("Requires Password")

#open the entire text file 
if choice == "password": 
    fp = open('answers.txt')
    while 1:
        line = fp.readline()
        if not line:
            break
        print (line)

 #quiz programming
 #generate a random keyword
elif choice == "2":
     input("You Ready? Press Enter Then")

您的第一次if执行会发生什么,打印Requires Password然后您的控件会转到第二个if-elif阶梯。没有匹配,预期choice已经等于"1"

然后,无论如何,不​​执行任何if/elif语句的其余代码都会执行。 if-elif块的存在不会影响该块的执行。

所以你要做的就是把下面的块的代码放在一些if-elif下(无论哪个条件需要满足),否则你可以做的是,在这个块之前放置另一个条件进入以检查是否符合您的期望条件。

答案 2 :(得分:1)

首先,阅读您的解释表明您的代码示例中缺少较高级别的部分;你能提供更多细节吗?

其次,对代码的评论:在处理返回元素的项目时,Python最好的方法是使用for

考虑到这一点,您的代码:

fp = open('answers.txt')
while 1:
    line = fp.readline()
    if not line:
        break
    print (line)

变得更清晰,更精简

for line in open('answers.txt'):  # this is an iterator
    print line,

这解释为in the Python Tutorial

答案 3 :(得分:0)

要回答你的第二个问题,你想要使用一系列if / elif / else语句,就像你之后所做的那样,如下所示。

if choice =='1':
   #do stuff here
elif choice=='2':
   #do stuff here
else:
   print("Invalid choice")

就第一个问题而言,我建议调用一个允许输入密码的子程序。这是这个子程序的开始:

def enterPassword():
   #Code to enter password here
   if password =='password':
      print 'You entered the right password!
      return True
   else:
      print 'Wrong password'
      return False

if choice =='1':
    if enterPassword():
        #Authenticated, do stuff that requires password
    else:
        print('Wrong password')