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

时间:2018-11-04 04:40:39

标签: python function

我想编写2个函数。一种功能,可从用户处获取输入并将其添加到列表中。第二个函数获取从第一个函数返回的列表,并打印出用空格分隔的每个元素。我想我很亲近,但是有些不对劲。键入-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())

3 个答案:

答案 0 :(得分:2)

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

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

# final = str(y) This is not required, why cast list as str
final = ' '.join(final)

答案 1 :(得分:1)

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

会起作用!

答案 2 :(得分:1)

如果打算打印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)

您知道为什么这样做了吗?