【问题标题】:Reading values from a file and outputting each number, largest/smallest numbers, sum, and average of numbers from the file从文件中读取值并输出文件中的每个数字、最大/最小数字、总和以及数字的平均值
【发布时间】:2019-04-07 22:32:29
【问题描述】:

我遇到的问题是我能够从文件中读取信息,但是当我尝试将它们从字符串转换为整数时,出现错误。我也有最小/最大打印为整个文件内容的问题。

我尝试过使用 if/then 语句以及为文件中的每一行使用不同的变量。

file=input("Which file do you want to get the data from?")
f=open('data3.txt','r')
sent='-999'
line=f.readline().rstrip('\n')
while len(line)>0:
    lines=f.read().strip('\n')
    value=int(lines)
    if value>value:
        max=value
        print(max)
    else:
        min=value
        print(min)
    total=sum(lines)
    print(total)

我希望代码能够找到文件中数字的最小值/最大值以及文件中数字的总和和平均值。在代码中处理文件的结果,然后必须写入不同的文件。我的结果包括读取 Python 无法从 str 转换为 int 以及打印整个文件的内容而不是预期结果的各种错误。

【问题讨论】:

  • 请包括一些示例数据以及完整的错误消息(回溯)。
  • print(repr(value)) 在你转换它之前看看它是否看起来像一个整数,或者使用源调试器并单步调试你的代码。

标签: python-3.x


【解决方案1】:

以下是否有效?

lines = list(open('fileToRead.txt'))
intLines = [int(i) for i in lines]
maxValue = max(intLines)
minvalue = min(intLines)
sumValue = sum(intLines)
print("MaxValue : {0}".format( maxValue))
print("MinValue : {0}".format(minvalue))
print("Sum : {0}".format(sumValue))
print("Avergae : {0}".format(sumValue/len(intLines)))

这就是我的filesToRead.txt 的公式(实际上只是一个简单的公式)

10
20
30
40
5
1

我正在将文件内容读入列表。然后我创建一个包含所有整数列表的新列表(它可以与上一步合并,作为某些代码重构的一部分)。一旦我有了整数列表,就更容易计算 max 和 min在上面。

请注意,有些变量没有正确命名。还可以一次性读取整个文件(就像我在这里所做的那样)如果文件太大,则可能是个坏主意。在这种情况下,您永远不应该一口气读完整个文件。在这种情况下,您需要逐行阅读,解析整数并将它们添加到整数列表中。读完文件后,关闭文件。然后,您可以根据您现在获得的整数列表开始计算。

如果这能解决您的问题,请告诉我。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    相关资源
    最近更新 更多