【问题标题】:Sum of Values in a file, negatives?文件中的值总和,负数?
【发布时间】:2016-04-11 02:04:35
【问题描述】:

我正在处理一个文件,其中每行有一个整数,并且没有逗号分隔数字。当我去获取该文件中数字的总和时,它仅适用于正整数。我所拥有的不适用于文件中的负数。有什么办法可以做到这一点?我的代码有问题:

if line.strip().isdigit():
            total += int( line)

如果文件中的所有数字都是负数,它只会将总和返回为 0。我可以使用什么其他方法来实现相同的目标(文件中所有数字的总和)可以将正数和负数相加整数?

【问题讨论】:

  • 您的文件中除了整数之外还有其他内容吗?如果不是,则 isdigit() 检查将是不必要的。如果有,还能在其中找到什么?
  • @MarkusM。在我试图得到的总和的文件中,除了整数之外没有其他任何东西。

标签: python file sum addition


【解决方案1】:

怎么样

try: total += int(line) except: pass

【讨论】:

  • 如果它们不是正数,这将完全绕过将数字加在一起,不是吗?
  • 嗨@Nick,int('-123') 将正常工作。我认为您只需要关心转换为 int 是否合法。
【解决方案2】:

问题是这些方法要求所有字符都是数字,而- 不是;见https://docs.python.org/2/library/stdtypes.html

>>> "234".isalnum()
True
>>> "-234".isalnum()
False
>>> "-234".isalpha()
False
>>> "-234".isdigit()
False

如果您的文件包含 int 和非 int,那么可能会看到 is_number(s): How do I check if a string is a number (float) in Python? 但将其修改为 int。比如:

def is_number(s):
    try:
        int(s)
        return True
    except ValueError:
        return False

然后在你有is_digit的地方使用is_number

【讨论】:

  • 我试图不导入东西。在不导入任何东西的情况下,还有其他形式吗?
  • 但这不会忽略我从中获取数字的 txt 文件中的负数吗?它不会像我想要的那样把它们加起来吗?我也只是在看整数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 2016-02-01
  • 1970-01-01
相关资源
最近更新 更多