【问题标题】:How to sum all values for numbers in rows in a file如何对文件中行中数字的所有值求和
【发布时间】:2020-02-18 00:04:31
【问题描述】:

我正在创建一个程序,该程序涉及对 .txt 文件的行中的所有数字求和。该文件是随机生成的,由 100 个随机数组成,每个随机数占据自己的行。我想做的是创建行中所有数字的列表,然后取该列表的总和。由于某种原因,我的代码不起作用:

import os
import math

filename = input("Enter file name: ")
if not os.path.exists(filename):
    print(filename, "does not exist")
else:
    fin = open(filename)
    counter = -1
    comments = 0
    total = 0

    for line in fin:
        if "#" in line:
            comments += 1
        counter = counter + 1

    newlist = [[]]
    fin = open(filename)

    for line in fin:
        newlist = [[]]
        val = []
        for value in line:
            val.append(value)
        newList.append(val)
        total = sum(newList)


    print("Count:", counter)
    print("Comments:", comments)
    print("Total:", total)

顶部运行良好,但“总”值(我试图得出的总和)的函数不起作用。任何建议将不胜感激。谢谢!

【问题讨论】:

    标签: python-3.x list sum python-import


    【解决方案1】:

    如果您有一行由空格分隔的 数字(而不是未分隔的数字),则您的双 for 循环不会像您想象的那样工作:

    >>> line = '12 34 56 78 90'
    >>> for value in line: print(value)
    ... 
    1
    2
    
    3
    4
    
    5
    6
    
    7
    8
    
    9
    0
    

    如上所述,遍历一个字符串(例如您输入的行)将一次处理一个字符

    要处理字符串中以空格分隔的单词,您可以使用如下内容:

    >>> for value in line.split(): print(int(value))
    ... 
    12
    34
    56
    78
    90
    

    如果你想对它们求和,你还需要将它们变成整数(如图所示)。

    【讨论】:

    • 这很有帮助,但基本上我不想打印列表本身,而是创建文件行中的数字列表,然后求和该列表并打印总和的“总”变量。
    • @duder: 然后你用你需要的任何处理替换我的print(例如你的append)。我的意图只是展示在 for 循环的上下文中对字符串的处理,处理单个字符(出了什么问题)而不是空格分隔的数字(你需要什么)。
    • @duder:很高兴我能帮上忙。干杯。
    猜你喜欢
    • 2023-03-24
    • 2021-12-07
    • 2019-07-19
    • 2017-12-25
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    相关资源
    最近更新 更多