在另一个函数(Python)中使用的返回值

在另一个函数(Python)中使用的返回值,python,function,Python,Function,我想写两个函数。一种从用户处获取输入并将其添加到列表中的函数。第二个函数获取从第一个函数返回的列表,并打印出每个元素,每个元素之间用空格分隔。我想我很接近,但有些地方不对劲。键入-999不会停止循环,我也不知道是否正确调用了函数 有什么想法吗 def listFunc(): num = 0 list1 = [] while num != -999: x = int(input('Enter a number, -999 to quit: '))

我想写两个函数。一种从用户处获取输入并将其添加到列表中的函数。第二个函数获取从第一个函数返回的列表,并打印出每个元素,每个元素之间用空格分隔。我想我很接近,但有些地方不对劲。键入-999不会停止循环,我也不知道是否正确调用了函数

有什么想法吗

def listFunc():
    num = 0
    list1 = []
    while num != -999:
        x = int(input('Enter a number, -999 to quit: '))
        list1.append(x)
    return list1


def formatFunc(y):
    final = str(y)
    ' '.join(final)
    print(final)


formatFunc(listFunc())

它应该与while循环中使用的变量相同

num = int(input('Enter a number, -999 to quit: '))
if num != -999:
     list1.append(num)


它应该与while循环中使用的变量相同

num = int(input('Enter a number, -999 to quit: '))
if num != -999:
     list1.append(num)

会有用的


会有用的

如果要打印listfunc的输入,则正确调用函数。但是,输入不会保存到全局范围内的变量,因此将被锁定,不供将来使用

此外,listfunc目前不进行输入验证。可以在输入中输入任何字符串。while循环不会结束,因为while中的条件从未满足。 根据您的条件重写它会产生:

def listfunc():
        someList = []
        while True:
                x = input("Enter a number, exit to quit")
                if 'exit' in x.lower():
                    break
                elif x.isdigit():
                    someList.append(x)
                else:
                    print("Input not recognized try again")
        return someList

def formatFunc(v):
        print(''.join(str(i) + ' ' for i in v)

你明白为什么会这样吗?

如果你想打印listfunc的输入,那么你调用的函数是正确的。但是,输入不会保存到全局范围内的变量,因此将被锁定,不供将来使用

此外,listfunc目前不进行输入验证。可以在输入中输入任何字符串。while循环不会结束,因为while中的条件从未满足。 根据您的条件重写它会产生:

def listfunc():
        someList = []
        while True:
                x = input("Enter a number, exit to quit")
                if 'exit' in x.lower():
                    break
                elif x.isdigit():
                    someList.append(x)
                else:
                    print("Input not recognized try again")
        return someList

def formatFunc(v):
        print(''.join(str(i) + ' ' for i in v)


你明白为什么这样做了吗?

你设置了
num=0
,但没有在循环中更新它。如果要理顺
num
x
之间的变量名,您将看到我怀疑的不同结果。投票以键入方式关闭。您正在比较用户输入的
num
而不是
x
。接收对
num
的输入。另外,
'.join(final)
不会更改任何内容,除非您将其分配回
final
。您设置了
num=0
,并且不在循环中更新它。如果要理顺
num
x
之间的变量名,您将看到我怀疑的不同结果。投票以键入方式关闭。您正在比较用户输入的
num
而不是
x
。接收对
num
的输入。另外,
'.join(final)
不会更改任何内容,除非您重新分配到
final
。感谢Vishnudev-输出仍然是一个逗号分隔的列表(现在有一个空格),但这让我更接近我的本来面目expecting@JD2775你注意到了吗?我注意到了,谢谢。当我取出它时,它会在追加bingo时错误地说应该是str instance,int foundPut str(num)!成功了。非常感谢。感谢Vishnudev-输出仍然是一个逗号分隔的列表(现在有一个空格),但这让我更接近我的本来面目expecting@JD2775你注意到了吗?我注意到了,谢谢。当我取出它时,它会在追加bingo时错误地说应该是str instance,int foundPut str(num)!成功了。非常感谢。谢谢@GlobalTraveler。输入验证部分是有意义的,我需要一些东西来打破循环,如您所示。尽管您提到“输入不会保存到全局范围内的变量,因此将被锁定,不供将来使用”,我还是感到困惑。我不确定我是否理解它。在您的版本中,似乎正在listFunc中定义并返回someList[]。和我一样。是否有什么东西可以使其全局访问,或者您只是提醒我,整体结构需要将其移出func?假设您希望重用用户输入的输入,您希望将结果存储到列表中,即inputs=listfunc();formatfunc(输入)。然后这些输入就可以用于其他目的。这是一个小问题,与你最初的问题无关。啊,我明白你的意思。我刚试过。这很有道理,也消除了我一段时间以来的困惑(与这个问题无关)。谢谢谢谢@GlobalTraveler。输入验证部分是有意义的,我需要一些东西来打破循环,如您所示。尽管您提到“输入不会保存到全局范围内的变量,因此将被锁定,不供将来使用”,我还是感到困惑。我不确定我是否理解它。在您的版本中,似乎正在listFunc中定义并返回someList[]。和我一样。是否有什么东西可以使其全局访问,或者您只是提醒我,整体结构需要将其移出func?假设您希望重用用户输入的输入,您希望将结果存储到列表中,即inputs=listfunc();formatfunc(输入)。然后这些输入就可以用于其他目的。这是一个小问题,与你最初的问题无关。啊,我明白你的意思。我刚试过。这很有道理,也消除了我一段时间以来的困惑(与这个问题无关)。谢谢