我实际上正在编写关于编码蝙蝠的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.我相信这是很容易修复的东西.
编写函数的更好方法是使用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的值,您需要停止添加.
为此,您可以修改原始函数sum从if块中返回值,其中值为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)
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |