如何重新启动程序回到开头

时间:2017-05-13 02:24:51

标签: python loops

如何重新启动此程序以再次询问用户输入更多信息?我很困惑,因为如果我使用while True:循环,它只打印出一大堆用户的输入。

userinput = str(input("enter a sentence: \n"))

def reverseinputs(x):

        string = []
        result = x.split(' ')
        string += reversed(result)
        print (' '.join(string))

reverseinputs(userinput)

3 个答案:

答案 0 :(得分:3)

def reverseinputs(x):
  ...

是一个定义,因此,不会执行任何操作(通常),并且可以安全地将其排除在循环之外。

您似乎想要反复询问用户输入,然后使用reverseinputs()处理它。这项任务是通过第一行实现的:

userinput = str(input("enter a sentence: \n"))

和最后一行:

reverseinputs(userinput)

将它们置于while(True)循环中应该产生所需的结果:

def reverseinputs(x):
        string = []
        result = x.split(' ')
        string += reversed(result)
        print (' '.join(string))

while(True):
        userinput = str(input("enter a sentence: \n"))
        reverseinputs(userinput)

你的问题似乎来自误解userinput作为一个函数,每次引用时都会执行(使用正确的语法),每次都给出一个新的输入,而不是作为一个变量,简单地给出它最后分配的任何值(在这种情况下,第一个用户输入)。

Sidenote :正如@diligar在评论中所指出的那样,为用户提供一些摆脱无限循环的方法总是一个好主意。这样的事情应该有效:

while(True):
    userinput = str(input("enter a sentence: \n"))
    if userinput == "": break
    ...

答案 1 :(得分:2)

简单地说:

while True:
    userinput = input("enter a sentence: \n")
    if not userinput:
        break
    print(' '.join(reversed(userinput.split())))

答案 2 :(得分:2)

虽然存在更优雅的方法,但快速而简单的解决方案是在功能结束时添加它:

x = str(input("enter a sentence: \n"))
reverseinputs(x)

基本上,你在这里创建一个递归函数。我认为一个更优雅的解决方案是像你提到的那样使用while循环:

def reverseinputs(x):
    string = []
    result = x.split(' ')
    string += reversed(result)
    print (' '.join(string))

while True:
    userinput = str(input("enter a sentence: \n"))
    reverseinputs(userinput)