【问题标题】:Summing numbers with header in Python在 Python 中将数字与标题相加
【发布时间】:2012-04-10 22:57:50
【问题描述】:

我必须编写一个执行此操作的脚本:

输入文件:
名称
10
-43
54
名称2
654
43
2
-5467
名称3
65
65

输出文件:
名称 21
姓名2 -4768
名称3 130

我得出的结论是,我应该将输入拆分为名称处的数组,然后打印第一个元素和其余元素的总和,但我不知道该怎么做,我还没有真正找到网络上有关此的任何信息。

【问题讨论】:

  • 逐行读取输入;尝试将每一行转换为一个数字,如果成功,你知道你有一个当前标题的新数字,如果它不起作用(引发异常),你知道你有一个新标题并且总和是完成最后一个。这个大纲有帮助吗?

标签: python sum


【解决方案1】:

一些提示:

>>> int('Name1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Name1'
>>> int('-43')
-43

这应该可以帮助您弄清楚什么是字符串,什么不是。它还将您的输入转换为您的数字。

了解如何捕获错误(tryexcept)。

了解如何逐行读取文件。尝试遍历文件;)

剩下的是基本的编程逻辑。自己搞清楚会给你带来最大的收益。

【讨论】:

    【解决方案2】:

    打开文件并使用 readline 逐行打开文件。检查它是否是字符串。通过查看您的文件格式,我假设两个字符串(Name1 和 Name2 或其他)之间的所有内容都是数字,因此将它们存储在列表中。最后使用 sum(list) 得到输出。我不写代码,因为这是“家庭作业”。

    【讨论】:

    • 不要使用readline()。您可以直接遍历文件。
    • 我写它是为了演示。毕竟,使用 readline 和由于使用 readline 而导致的一些循环不会对“作业”造成伤害。
    【解决方案3】:

    使用逐行遍历文件

    for line in open('test.txt'):
        # do stuff
    

    当你找到一个名字时,你需要开始将每个数字加到一个总和中,直到你遇到一个不同的名字,当你再次从零开始对这些数字求和时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 2014-06-03
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多