如何使用Python 3中的readlines读取由空格分隔的整数输入文件?

Sha*_*ard 4 python integer readlines python-3.x

我需要读取一个包含一行整数(13 34 14 53 56 76)的输入文件(input.txt),然后计算每个数字的平方和.

这是我的代码:

# define main program function
def main():
    print("\nThis is the last function: sum_of_squares")
    print("Please include the path if the input file is not in the root directory")
    fname = input("Please enter a filename : ")
    sum_of_squares(fname)

def sum_of_squares(fname):
    infile = open(fname, 'r')
    sum2 = 0
    for items in infile.readlines():
        items = int(items)
        sum2 += items**2
    print("The sum of the squares is:", sum2)
    infile.close()

# execute main program function
main()
Run Code Online (Sandbox Code Playgroud)

如果每个数字都在它自己的行上,它可以正常工作.

但是,当所有数字都在一个由空格分隔的行上时,我无法弄清楚如何做到这一点.在这种情况下,我收到错误:ValueError: invalid literal for int() with base 10: '13 34 14 53 56 76'

Far*_*n.K 5

您可以使用file.read()获取字符串,然后使用str.split空格分割.

您需要将每个数字从a string转换为int第一个,然后使用内置sum函数计算总和.

另外,您应该使用该with语句为您打开和关闭文件:

def sum_of_squares(fname):

    with open(fname, 'r') as myFile: # This closes the file for you when you are done
        contents = myFile.read()

    sumOfSquares = sum(int(i)**2 for i in contents.split())
    print("The sum of the squares is: ", sumOfSquares)
Run Code Online (Sandbox Code Playgroud)

输出:

The sum of the squares is: 13242
Run Code Online (Sandbox Code Playgroud)