我需要帮助搞清楚我做错了什么

时间:2017-02-27 23:12:35

标签: python python-3.x

我正在为学校工作。我通过电子邮件发送了我的教授,并得到了非常模糊的非有用答案。以下是我必须做的事情

  

编写并测试程序以满足以下规范:

     

编写一个名为fileToList(inFile)的函数,其中inFile是一个文件   有7行,每行一个数字。 inFile的内容是   转移到名为数字的列表。该函数将返回   列出在函数中创建的被叫号码(30分)。

     

编写一个名为sumList(nums)的函数,其中nums是一个数字列表。   该函数将返回列表中数字的总和(30   点)。

     

编写一个名为main()的函数来调用函数   fileToList(inFile)和sumList(nums)并打印结果   sumList(nums)(30分)。

     

在代码顶部包含一个标题,其中包含以下信息   (5分):

# Name of programmer: you name goes here
# Date: date program was written
# Description: a description of what the program does. 
     

将文件data.txt用于函数读取的文件   fileToList(infile中)。

#SumList.py
# 02/26/2017
# This program will pull data from a file prints the data then sums the numeric data.



inFile = open("data.txt","r")
nums = []

def fileToList(inFile):
    numbers = []
for i in range(7):
    numbers.append(inFile.readline())
print('\n'.join(numbers))


def sumList(nums):
    file = open("data.txt","r")

    line = file.read()

    total = sum(file)

print(total)

def main():
    fileToList(inFile)
    sumList(nums)
main()

数据文件

1245.67
1189.55
1098.72
1456.88
2109.34
1987.55
1872.36

3 个答案:

答案 0 :(得分:0)

  

函数将返回在函数

中创建的名为数字的列表

您需要退货,而不是打印。

def fileToList(inFile):
    numbers = [int(line) for line in inFile.readlines()]
    return numbers
  

编写一个名为sumList(nums)的函数,其中nums是一个数字列表。函数将返回列表中数字的总和

再一次,return丢失了...而且没有文件应该是open() - ed ...请阅读 How to sum a list of numbers in python

  

编写一个名为main()的函数,该函数调用函数fileToList(inFile)和sumList(nums)并打印sumList(nums)的结果

您需要从函数中获取return值。

这是你的任务的一部分,但这是一个开始

def main():
    with open("data.txt") as inFile:
        numbers = fileToList(inFile)

代码少得多:Python: How to sum numbers from text file

答案 1 :(得分:0)

<强>更新

使用.strip()删除row周围的隐藏字符/空格,并使用convert_2_decimal_float()转换字符串浮点值,精确到2位小数。

def fileToList(inFile):
    numbers = []
    for row in inFile:
        float_value = convert_2_decimal_float(row.strip())
        print(float_value)
        numbers.append(float_value)
    print(','.join([str(n) for n in numbers]))
    return numbers


def sumList(nums):
    print(convert_2_decimal_float(sum(nums)))

def convert_2_decimal_float(v):
    return round(float(v), 2)

def main():
    inFile = open("sample.csv")
    nums = fileToList(inFile)
    sumList(nums)
    inFile.close()
main()

以方法main()打开文件。 在inFile中迭代fileToList(),在列表numbers中添加数字并返回列表,下一步将返回的列表传递到sumList()并通过内置方法将所有数字相加{ {1}},最后关闭打开的文件

答案 2 :(得分:-1)

在读取文件中的行时,您希望将值转换为整数,如下所示: numbers.append(int(inFile.readline()))

您还希望fileToList函数实际返回数字列表,这样您就可以使用main中的列表,而不仅仅是打印它们,因此您的fileToList函数应如下所示:

def fileToList(inFile):
    numbers = []
    for i in range(7):
        numbers.append(float (inFile.readline()))
    return numbers

sumList函数可以是一个简单的函数,它将数字列表作为参数并返回总和:

def sumList(numbers):
    return sum(numbers)

因此,在main中,您可以调用fileToList并存储变量中返回的数字列表:

def main():
    numbers = fileToList(inFile)

然后使用数字作为sumList函数的参数并打印结果:

    print(sumList(numbers))

程序:

inFile = open("data.txt","r")

def fileToList(inFile):
    numbers = []
    for i in range(7):
        numbers.append(float(inFile.readline()))
    inFile.close()
    return numbers

def sumList(numbers):
    return sum(numbers)

def main():
    numbers = fileToList(inFile)
    print(sumList(numbers))

main()