【问题标题】:Wrong print out statement in python 2.7python 2.7中的错误打印语句
【发布时间】:2015-07-08 18:06:16
【问题描述】:

问题:

5. 现在编写函数 is_odd(n),当 n 为奇数时返回 True,否则返回 False。

最后,修改它,使其使用对 is_even 的调用来确定其参数是否为奇数。

我必须为 is_even(n) 编写一个函数,当 n 为偶数时返回 True,否则返回 False。这是我的代码:

def is_even(n):
    return n % 2 == 0



def is_odd(n):
    if is_even(n):
        print "This is an even integer."
    else:
        print "This is an odd integer."
    return n % 2 != 0

我的问题: 我是一个完全的初学者,发现编程非常困难,但出于某种原因我喜欢它,但为什么这不起作用?我定义了函数 is_even(n) 和 is_odd(n),将 is_even(n) 放入 is_odd(n) 函数中,如果函数 is_even 等于 true,则编写 if/else else 语句,它应该打印出它是偶数...当我输入 is_odd(3);它打印出“这是一个偶数”并返回 True,即使它应该打印出“这是一个奇数”。

更新:

我把我的代码改成了这个并且工作正常。

def is_even(n):
    return n % 2 == 0

def is_odd(n):
    if is_even(n) == False:
        print "This is an odd integer."

    return n % 2 != 0

【问题讨论】:

  • 这与您建议的代码不起作用无关(尽管== True 在这里是多余的,您可以只写if is_even(n)),以及与您有关的一切(a.)混合制表符和空格,或者 (b.) 如果缩进的空格数量与缩进它上面的其他块不同。
  • 是的,你说得对,我先问了这个问题,并将代码修改为函数内部的函数调用工作的位置,并没有回到这个来改变所提出的问题。我仔细检查了混合和匹配,只使用了没有空格的制表符,并将所有内容缩进了 4 个空格,但仍然收到相同的错误
  • 我认为你错过了一些东西,因为如果你说的是真的,它会起作用。尝试将所有选项卡更改为空格以确保安全。
  • 我开始了一个新的石板并重新输入了所有内容,它确实有效,所以没有缩进错误,但是当我测试放入 is_odd(3) 的代码时,我得到“这是一个偶数”并且是真的.. 即使它应该是“这是一个奇数”。
  • 很确定这只是另一个错字。上面的代码是正确的,适用于我在 Python 2.7 中。

标签: python-2.7


【解决方案1】:

您遇到IndentationError 是因为您的缩进不一致。一旦你在 Python 中缩进,你就创建了一个新块。在引入块关键字之后执行此操作,例如 ifwhilefor 等。Python 不在乎在第一个块之前使用了多少空格或制表符,但是一旦你做出选择第一次,您必须继续使用相同的号码。我在您发布的代码中添加了一行以向您展示:

看看返回的 r 与 if 的 f 是如何对齐的?它需要与 i 对齐。在此示例中,您的 if 相对于第一个块的缩进级别不正确,从而产生相关错误。

【讨论】:

  • 谢谢,也许我需要有关 stackoverflow 的教程或如何在堆栈中有效地编写代码。我在 NotePad++ 中的代码显示了正确的缩进,但是当我将它转移到堆栈时,缩进变得混乱。但你确实回答了我的问题。
  • 我从未尝试过this one,但它看起来很有希望。总是有the original reference,但我发现那个网站很难阅读。也许我还应该为此推荐一些类似 Evernote Clearly 的东西。 :) 无论如何,很高兴我能帮上忙。
猜你喜欢
  • 2012-07-25
  • 2014-04-29
  • 1970-01-01
  • 2023-04-06
  • 2020-10-09
  • 1970-01-01
  • 2016-08-16
  • 2011-11-26
  • 2015-06-29
相关资源
最近更新 更多