Python 如何在提供空输入时不关闭循环

Python 如何在提供空输入时不关闭循环,python,python-3.x,Python,Python 3.x,在我当前的Python项目中,我通过while循环使用一个循环,并在其中有一个输入函数。到目前为止,我已经使用IF定义了基于use输入发生的三种不同的事情,并且当所述输入不起任何作用时,我已经设法使用ELSE来打印消息 然而,当输入保持为空并被输入时,循环中断,我得到一个基于if操作[0]==go:line的索引器。以下是我使用的代码: while True: action = input("? ").lower().split() #user puts in one o

在我当前的Python项目中,我通过while循环使用一个循环,并在其中有一个输入函数。到目前为止,我已经使用IF定义了基于use输入发生的三种不同的事情,并且当所述输入不起任何作用时,我已经设法使用ELSE来打印消息

然而,当输入保持为空并被输入时,循环中断,我得到一个基于if操作[0]==go:line的索引器。以下是我使用的代码:

while True:
    action = input("? ").lower().split()
        #user puts in one of the words below plus a direction
    if action[0] == "go":
        #stuff happens
    if action[0] == "get" :
        #stuff happens
    if action[0] == "exit":
        break
    else:
        print("Please try again.")

这段代码可以工作,但如上所述,如果我只按enter键,或者只输入空格,循环中断,我就会得到一个索引器。如何修复此问题?

尝试在循环开始时使用此条件:

if not action:
    print("Please try again.")
    continue
如果您不输入任何内容,split将为您提供一个空列表,因此当您尝试为其编制索引时,它将抛出一个索引错误。解决方案只是检查输入是否为空,如果为空,则跳过其他条件并继续迭代。如果操作==[]:中断完成此任务

while True:
    action = input("? ").lower().split()
        #user puts in one of the words below plus a direction
    if action == []:
        continue
    if action[0] == "go":
        #stuff happens
    if action[0] == "get" :
        #stuff happens
    if action[0] == "exit":
        break
    else:
        print("Please try again.")

如果满足以下条件,则放置为第一行:如果不操作:在courseThat's的冒号后继续新行,因为操作=[]当您不提供任何输入时,将显示一个空列表!空列表没有第一个元素操作[0]。在访问输入元素之前,您需要添加一些方法来检查输入是否为空。是否需要输入?请重试。如果只输入了空格,则要打印的消息?如果你在这种情况下不需要该消息,那么就按照阿尔法辛的建议去做。顺便说一句,你应该使用elif,因为这些情况是相互排斥的。我知道lenaction==0检查动作的长度是否为0,但我问题中的一条评论提到,如果不是动作,就简单地使用它。这两者之间有区别吗?实际上没有任何真正的区别,长度为0的列表等于NULL,“notnull”等于true