Python 2.7 在python中,如何将循环数据从一个函数传递到另一个函数?
我试图将多行列表从一个函数传递到另一个函数,但我不知道如何完成。以下是我目前掌握的代码:Python 2.7 在python中,如何将循环数据从一个函数传递到另一个函数?,python-2.7,Python 2.7,我试图将多行列表从一个函数传递到另一个函数,但我不知道如何完成。以下是我目前掌握的代码: def readfile(): '''Read a text file; return a string holding the text''' f = open("numbers.txt", 'r') line = f.readlines() f.close() return line def dataConversio
def readfile():
'''Read a text file; return a string holding the text'''
f = open("numbers.txt", 'r')
line = f.readlines()
f.close()
return line
def dataConversion(lines):
lst = []
for element in lines:
lst = element.strip()
lst = map(int, lst)
print lst
return lst
def evenNumberList(lsts):
print lsts
def main():
lines = readfile()
lsts = dataConversion(lines)
doubledList = evenNumberList(lsts)
main()
dataConversion(lines)函数的输出为:
[4, 3, 8, 8, 5, 7, 6, 0, 1, 8, 4, 0, 2, 6, 2, 6]
[4, 3, 8, 8, 5, 7, 6, 0, 1, 8, 4, 1, 0, 7, 0, 7]
[4, 0, 1, 2, 8, 8, 8, 8, 8, 8, 8, 8, 1, 8, 8, 1]
[4, 5, 5, 2, 7, 2, 0, 4, 1, 2, 3, 4, 5, 6, 7, 7]
[4, 5, 3, 9, 9, 9, 2, 0, 4, 3, 4, 9, 1, 5, 6, 2]
[4, 9, 9, 2, 7, 3, 9, 8, 7, 1, 6, 0, 0]
[4, 9, 9, 2, 7, 3, 9, 8, 7, 0, 0, 1, 7]
[8, 0, 8, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 5, 8, 8, 3, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 4, 9, 1, 9, 4, 6, 9, 1, 5, 4, 4, 4, 9, 2, 3]
[5, 4, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 8]
[3, 7, 8, 2, 8, 2, 2, 4, 6, 3, 1, 0, 0, 0, 5]
[3, 7, 1, 4, 4, 9, 6, 3, 5, 3, 9, 8, 4, 3, 1]
[3, 7, 1, 4, 4, 9, 6, 3, 5, 3, 9, 8, 4, 3, 1]
[3, 7, 8, 7, 3, 4, 4, 9, 3, 6, 7, 1, 0, 0, 0]
[3, 7, 8, 7, 3, 4, 4, 9, 3, 6, 7, 1, 0, 0, 1]
[6, 0, 4, 1, 2, 7, 3, 9, 9, 0, 1, 3, 9, 4, 2, 4]
[6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7]
[6, 0, 1, 1, 0, 0, 0, 9, 9, 0, 1, 3, 9, 4, 2, 4]
[6, 0, 1, 1, 0, 0, 0, 9, 9, 0, 1, 3, 9, 4, 2, 4]
而evenNumberList(lsts)函数的输入为:
[4, 3, 8, 8, 5, 7, 6, 0, 1, 8, 4, 0, 2, 6, 2, 6]
[4, 3, 8, 8, 5, 7, 6, 0, 1, 8, 4, 1, 0, 7, 0, 7]
[4, 0, 1, 2, 8, 8, 8, 8, 8, 8, 8, 8, 1, 8, 8, 1]
[4, 5, 5, 2, 7, 2, 0, 4, 1, 2, 3, 4, 5, 6, 7, 7]
[4, 5, 3, 9, 9, 9, 2, 0, 4, 3, 4, 9, 1, 5, 6, 2]
[4, 9, 9, 2, 7, 3, 9, 8, 7, 1, 6, 0, 0]
[4, 9, 9, 2, 7, 3, 9, 8, 7, 0, 0, 1, 7]
[8, 0, 8, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 5, 8, 8, 3, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 4, 9, 1, 9, 4, 6, 9, 1, 5, 4, 4, 4, 9, 2, 3]
[5, 4, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 8]
[3, 7, 8, 2, 8, 2, 2, 4, 6, 3, 1, 0, 0, 0, 5]
[3, 7, 1, 4, 4, 9, 6, 3, 5, 3, 9, 8, 4, 3, 1]
[3, 7, 1, 4, 4, 9, 6, 3, 5, 3, 9, 8, 4, 3, 1]
[3, 7, 8, 7, 3, 4, 4, 9, 3, 6, 7, 1, 0, 0, 0]
[3, 7, 8, 7, 3, 4, 4, 9, 3, 6, 7, 1, 0, 0, 1]
[6, 0, 4, 1, 2, 7, 3, 9, 9, 0, 1, 3, 9, 4, 2, 4]
[6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7]
[6, 0, 1, 1, 0, 0, 0, 9, 9, 0, 1, 3, 9, 4, 2, 4]
[6, 0, 1, 1, 0, 0, 0, 9, 9, 0, 1, 3, 9, 4, 2, 4]
我怎样才能使它们匹配?我需要evenNumberList(lsts)函数中的所有代码行,而不仅仅是一行。我的教授告诉我,我需要从循环中调用函数,但我还不知道怎么做。我会这样编写代码:
def dataConversion(lines):
temp = []
for element in lines:
converted = map(int, element.strip())
temp.append(converted)
return temp
def evenNumberList(lsts):
return lsts
if __name__ == '__main__':
lines = open("numbers.txt", 'r').readlines()
lsts = dataConversion(lines)
doubledList = evenNumberList(lsts)
print lsts
print doubledList
您遇到的主要问题是正确使用return
<代码>打印为非返回
。您的evenNumberList()
函数完全没有返回任何内容
另外,在dataConversion()
中,您在一个空列表上使用了map()
,这也不会产生实际输出
我的经验法则是:不要在这样的函数中使用
print
语句。将它们从函数中取出并放入实际的程序中,因为这样更容易捕获错误。我会这样编写代码:
def dataConversion(lines):
temp = []
for element in lines:
converted = map(int, element.strip())
temp.append(converted)
return temp
def evenNumberList(lsts):
return lsts
if __name__ == '__main__':
lines = open("numbers.txt", 'r').readlines()
lsts = dataConversion(lines)
doubledList = evenNumberList(lsts)
print lsts
print doubledList
您遇到的主要问题是正确使用return
<代码>打印为非返回
。您的evenNumberList()
函数完全没有返回任何内容
另外,在dataConversion()
中,您在一个空列表上使用了map()
,这也不会产生实际输出
我的经验法则是:不要在这样的函数中使用print
语句。将它们从函数中取出并放入实际程序中,因为这样更容易捕捉错误。在dataConversion()
中,每次循环都要重新绑定lst
变量,因此只返回最后一次迭代结果的数据
主循环表明,您希望从该函数中获得的是lsts
,或者多个列表,但您只返回一个列表
要开始,您应该在dataConversion()
中创建一个作为返回值的变量,可以将其称为lsts
或listoflists
,然后在for循环中执行lsts.append(lst)
其中lst
是当前从dataConversion()
中的元素创建的整数列表,每次循环都要重新绑定lst
变量,因此只返回最后一次迭代结果的数据
主循环表明,您希望从该函数中获得的是lsts
,或者多个列表,但您只返回一个列表
要开始,您应该在dataConversion()
中创建一个作为返回值的变量,可以将其称为lsts
或listoflists
,然后在for循环中执行lsts.append(lst)
其中lst
是当前从元素创建的整数列表
谢谢您的帮助。我意识到印刷品不会被退回。打印的唯一原因是我可以看到我的输出。我发布代码时忘了删除它。此外,我的evenNumberList()函数还不应该返回任何内容。我仍在尝试将正确的数据输入其中。一旦我得到了正确的数据,我会做我必须做的事情,以获得我需要的输出。我在这学期的学习还不够深入,不知道名字和主语是什么,所以我不能用它们,但我现在知道我错在哪里了。再次感谢您。在运行Python文件时,将运行if\uuuuu name\uuuu='\uuuu main\uuuu'
中的内容。感谢您的帮助。我意识到印刷品不会被退回。打印的唯一原因是我可以看到我的输出。我发布代码时忘了删除它。此外,我的evenNumberList()函数还不应该返回任何内容。我仍在尝试将正确的数据输入其中。一旦我得到了正确的数据,我会做我必须做的事情,以获得我需要的输出。我在这学期的学习还不够深入,不知道名字和主语是什么,所以我不能用它们,但我现在知道我错在哪里了。再次感谢您。在运行Python文件时,将运行if\uuuu name\uuu=='\uuu main\uuuu'
中的内容。非常感谢您的帮助。我想我现在可以把事情弄清楚了。@AbigailHackney-没问题,如果我的答案能帮助你点击答案旁边复选标记的轮廓。非常感谢你的帮助。我想我现在可以把事情弄清楚了。@AbigailHackney-没问题,如果我的答案能帮助你点击答案旁边复选标记的轮廓。