多个IF语句 - IF条件未满足后代码停止

Nei*_*eil -2 python

我实际上正在编写关于编码蝙蝠的python.这是我遇到问题的问题:http://codingbat.com/prob/p107863.不确定问题是否与他们有关.这是我的代码.它用于将所有不等于13的输入相加.可能有更好的方法.但是,我真正想知道的是如果不满足前一个IF语句的条件,如何评估下一个IF语句.

def lucky_sum(a, b, c):
  results=0
  if a != 13: 
    results= results + a
  if b != 13: 
    results= results + b
  if c != 13: 
    results= results + c
  return results  #EDIT: Indented this 2 spaces to correct OP formatting error -sequoia
Run Code Online (Sandbox Code Playgroud)

如果你运行lucky_sum(1, 13, 3)它,它返回1而不是4.我相信这是很容易修复的东西.

Roh*_*ain 6

编写函数的更好方法是使用non-keyword arguments.只需sum()在生成器表达式上使用函数即可返回总和.

>>> def lucky_sum(*nkwargs):
...     return sum(x for x in nkwargs if x != 13)

>>> lucky_sum(1, 13, 3)
4
Run Code Online (Sandbox Code Playgroud)

在您的原始代码中,存在缩进错误的问题.您的return语句没有正确缩进.


根据您的修改,上面的代码和您的问题中的代码将不适用于编码蝙蝠问题.一旦找到等于13的值,您需要停止添加.

为此,您可以修改原始函数sumif块中返回值,其中值为13.我将在这里对我的功能进行相应的修改:

>>> def lucky_sum(*nkwargs):
...     try:
...         index = nkwargs.index(13)
...         return sum(nkwargs[:index])
...     except ValueError:
...         return sum(nkwargs)

>>> lucky_sum(1, 3, 4)
8
>>> lucky_sum(1, 3, 13,  4)
4
Run Code Online (Sandbox Code Playgroud)