这是我的代码:
#Choose Report
def chooseReport():
print "Choose a report."
while True:
choice = raw_input("Enter A or B: ")
if choice == 'a' or choice == 'A':
reportA()
break
elif choice == 'b' or choice == 'B':
reportB()
break
else:
continue
当我输入a
或b
时,它再次要求我"Enter A or B"
。它不会去它应该的功能。
知道为什么会这样吗?
答案 0 :(得分:2)
def chooseReport():
print "Choose a report."
t=True # t starts at true
while t:
choice = raw_input("Enter A or B: ")
if choice == 'a' or choice == 'A':
reportA()
t=False # t turns false to break out of loop
elif choice == 'b' or choice == 'B':
reportB()
t=False
试试这个。它在t为真时保持循环,在t为假时停止。问题可能还在于reportA或reportB或您如何调用chooseReport。
答案 1 :(得分:2)
代码是完美的,除了冗余的其他内容,如评论中所述。您是在输入 Days Since 1/17/18 1/18/18 1/19/18 1/20/18
Event A 2 X
Event B 1 X
Event C 0 X
Event D 3 X
(a +空格)而不是简单地a
(没有空格)吗?问题在于您提供的输入而不是代码!
答案 2 :(得分:2)
首先,你的代码工作正常,最可能的错误是你写错了输入(例如:有更多的字符)。要解决这个问题,您可以使用"a" in choice or "A" in choice
。但如果它不起作用......继续阅读。
似乎break
没有影响while loop
,我没有python 2所以我不太清楚为什么(在python 3中[在更改后raw_input
到{ {1}}和input
到print
]您的代码非常完美。)所以你应该使用print()
的条件来打破它。
while
理论上永远工作,因为每次执行代码时都会检查条件 - while True
- 并且因为它是真的它会保持循环。
您可以操纵该条件以打破循环(不允许再次执行其代码)。
例如,你可以使用它:
True
答案 3 :(得分:2)
问题出在std::vector<int>
。它会返回一个字符串,但是这个字符串可能是raw_input()
或"a "
,但您已输入"a\n"
或"a"
。
我会这样做:
"b"
答案 4 :(得分:2)
在以下脚本中尝试了您的代码,它在Linux和Windows上都可以正常工作。
def reportA():
print "AAAAA"
def reportB():
print "BBBBB"
#Choose Report
def chooseReport():
print "Choose a report."
while True:
choice = raw_input("Enter A or B: ")
if choice == 'a' or choice == 'A':
reportA()
break
elif choice == 'b' or choice == 'B':
reportB()
break
else:
continue
chooseReport();
答案 5 :(得分:1)
代码很好。我认为你在循环中调用你的chooseReport()函数,或者你的输入有额外的字符,如果条件不满意。