【问题标题】:How to raise an exception when a list contains negative values当列表包含负值时如何引发异常
【发布时间】:2020-06-10 05:32:08
【问题描述】:

如果我的列表“x”包含负值,我想计算调和平均值并引发异常。 但是代码不起作用。如何调整我的 for + if 语句t 来解决问题? 谢谢。

x=[1,2,3.0,-3,,-2,1]

def hmean(x):
  sum= 0.0
  for i in x:
    if i < 0:
      raise Exception("list contains negative values")
    else:
      sum = 0.0
      for i in x:
        sum+= 1.0 / i
      return print(float(len(x) / sum))

【问题讨论】:

  • 取消缩进return,它应该具有与for 语句相同的缩进级别。你也不应该像这样组合returnprint,在这种情况下坚持return
  • sum 是一个python函数,你不能用它作为变量名。
  • 你的输出是什么?
  • @CC7052:您可以将其用作变量名,但不会调用您使用内置函数@987654328 @ 之后如果你这样做。
  • hblanc28:我建议您先让代码处理没有负值的列表,然后再添加检查。

标签: python list for-loop if-statement negative-number


【解决方案1】:

您好,如果您想更正您的答案,认为这会有所帮助:

x=[1,2,3.0,-3,2,-2,1]

def hmean(x):
    s= 0.0
    for i in x:
        if i < 0:
            raise Exception("list contains negative values")
        else:

            s += 1.0 / i
    return float(len(x) / sum)
hm = hmean(x)
print(hm)

【讨论】:

    【解决方案2】:

    这段代码有几个问题:

    def hmean(x):
      for i in x:
        if i < 0:
          raise Exception("list contains negative values")
      # no need for else:, we come here if exception is not raised
      s = 0.0 # do not use sum as variable name
      for i in x:
        s += 1.0 / i
      return float(len(x)) / s # return needs to be outside the for loop; also, no print() here
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      相关资源
      最近更新 更多