是一个While True或If语句最好在执行一个函数之前转到下一个
问题描述:
我被困在一个简单的问题上。我试图要求用户从列表中选择所需的功能。这个输入的用户字符串将调用所选择的功能,直到它完成运行。 (这是一个照明序列)。在这个序列结束后,我想询问用户他或她是否希望选择另一个功能。如果是这样,继续。如果没有,退出代码。是一个While True或If语句最好在执行一个函数之前转到下一个
我不能决定,如果一段时间真的或如果语句是最好的实现这一点。
这里是我的代码:
# random functions
def rainbow():
print 'rainbow'
def clover():
print 'clover'
def foo():
print 'eggs'
if __name__ == '__main__':
# here are some random initializations
print 'ctr-c to quit'
user_input = input("choose from the following: ")
if user_input == 'rainbow':
print 'generating'
rainbow()
rainbow()
rainbow()
user_input = input('choose another')
if user_input == 'foo':
clover()
clover()
答
我会建议使用while
循环这里,直到你获得成功的USER_INPUT,基于此,你会想打破循环。在while
看起来,你可以根据需要得到你的if语句。例如,在上面的代码中,如果用户键入"rainboww"
会发生什么,它基本上只是退出程序。它最好能够有这样的:
while True:
user_input = input('...')
if "good result"
break
else:
continue
答
while True:
user_input = input("choose from the following: ")
if user_input == "condition a":
do something
elif user_input == "condition b":
do something..
elif any(user_input == keyword for keyword in ["q", "quit"]):
# when meet any quit keyword, use break to terminate the loop
break
else:
# when doesn't find any match, use continue to skip rest statement and goto the beginning of the loop again
continue
,而真正能满足您的要求。你可以使用if-elif-else子句来完成不同的工作。
非常感谢。我尝试过实现你的两个代码的组合,他们的工作,但我想实现任何函数运行后返回到user_input。这种方式后,有一个选项来输入一个新的选择。 –
user_input = input(“从以下选项中选择”)而True: if user_input =='colorWipe':print'正在生成...'colorWipe(strip,Color(255,0,0))break'''here我想实现一个选项,在执行函数后返回用户输入'''elif user_input =='theatreChaseRainbow':print'正在生成...'剧院阶段(strip,Color(127,127,127))#白色影院chase break elif any(user_input ==关键字['q','quit']中的关键字): –
如果要将控制返回到while循环的开始处,请用'continue'替换'break' – haifzhan