Чтобы пояснить комментарий выше, вам не нужно запускать свой список через цикл for, так как функция sum справится с этим за вас.На самом деле, ваша функция sum_list довольно избыточна.Рабочая функция выглядит следующим образом:
def sum_list(nums):
sums = sum(nums)
return sums
Я бы исключил эту функцию и просто сделал бы:
def square_each(nums):
import math
for i in range(len(nums)):
nums[i] = nums[i]**2
def to_numbers(str_list):
numbers = [int(strings) for strings in str_list]
return numbers
def main():
print("This program computes the sum of the squares of numbers read from a file.")
filename = input("Please enter the file name:")
file = open(filename, 'r')
line = file.readline()
list1 = line.split(" ")
numbers = to_numbers(list1)
square_each(numbers)
sums = sum(numbers) # <- this instead of your function presuming that you are feeding a list
print("The sum of the squares of the numbers in the file is{0}".format(sums))
main()
Некоторое чтение для функции суммы в python:
http://interactivepython.org/runestone/static/pythonds/Recursion/pythondsCalculatingtheSumofaListofNumbers.html
Причина, по которой я выбрал этот пример, заключается в том, что он показывает то, что, по моему мнению, ваша функция пытается достичь - если ваши входные данные еще не были списком;но в вашем случае это на самом деле не требуется.