多个IF语句代码在IF条件不是M之后停止

2024-09-30 20:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

实际上,我正在研究python编写bat代码。这就是我遇到的问题: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

如果您运行这个lucky_sum(1, 13, 3),它将返回1而不是4。我相信这是很容易解决的问题。在


Tags: 方法代码comhttp密码if语句results
3条回答

我不相信发布的代码是你的真实代码。在

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 #<--- This would result in an error

但是,在正确缩进返回值的情况下,代码确实会独立于是否输入了前一个if语句体来计算每个if语句。正确地缩进,您确实可以从lucky_sum(1, 13, 3)中得到4个(请参见:http://ideone.com/FIvEnk)。在

但是,更好的方法是:

^{pr2}$

也可以使用语法def lucky_sum(*some_args):获取可变数量的参数。我把它留给你去弄清楚如何在函数中使用它。在

你的问题是你误解了你正在使用的教程网站:它要求你做与你所说的完全相反的事情,它想要你(错误地)说你的代码产生的结果,而不是你错误地认为它想要的结果。在

以下代码符合他们要求的规范:

def lucky_sum(a, b, c):
    acc = 0
    for n in (a,b,c):
        if n == 13: break
        acc += n
    return acc

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

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

>>> lucky_sum(1, 13, 3)
4

在原始代码中,存在一个缩进错误的问题。你的报税表没有正确缩进。在


根据您的修改,上面的代码和您问题中的代码将不适用于编码Bat问题。一旦你发现一个值等于13,你就需要停止加法。在

为此,您可以修改原始函数,从if块返回sum,其中的值是13。我将在这里对我的函数进行相应的修改:

^{pr2}$

what I really want to know is how to evaluate the next IF statement if the previous IF statement's condition is not met.

如果不满足If语句的条件,它将跳过缩进的逻辑,并移到与If语句相等缩进的下一行,在本例中,这是另一个If语句。所以你的代码按预期工作。在

只要正确地缩进return语句。在

If you run this lucky_sum(1, 13, 3) it returns 1 instead of 4.

不是真的。你的代码返回4,但它应该返回1!你错过了这个问题:

However, if one of the values is 13 then it does not count towards the sum and values to its right do not count.

所以如果一个值是13,你也不想在它的右边加上值,你可以这样做。在

相关问题 更多 >