我的代码是如果选择==“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
如何停止要求密码并允许用户输入密码。还有不正确的选项,在代码中显示,我无法摆脱它。
答案 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,
答案 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')