4

我目前正在阅读“如何像计算机科学家一样思考:用 Python 学习”(绿茶出版社,2002 年 1 月)。

我无法使任何定义功能起作用。我已经完全按照书中的内容复制了它,但它不起作用。我做错了什么?

这是代码:

def printParity(x):
    if (x)%2 == 0:
        print (x), ("is even")
    else:
        print (x), ("is odd")

它只是打印 (x) 输入,而不是 (x) 是奇数还是偶数。

4

4 回答 4

4

你要:

def printParity(x):
    if x % 2 == 0:
        print(x, "is even")
    else:
        print(x, "is odd")

你的陈述print (x), ("is even")

实际上是在制作一个元组,如控制台所示:

>>> x=2
>>> print (x), ("is even")
2
(None, 'is even')
于 2012-08-30T16:25:44.090 回答
4

在 Python 3 中,print是一个函数,而不是一个语句。使用 Python 3 教程。

def printParity(x):
    print("{0} is {1}".format(x, "odd" if x % 2 else "even"))

正如 DSM 指出的那样,您的代码正在创建一个元组,该元组将 的结果print(x)作为其第一个元素(并且由于print()不返回任何内容,因此该结果是None),并将"is even"其作为其第二个元素。但是,它对该元组没有任何作用,因此没有任何可见的事情发生(并且未命名的元组很快就会被垃圾收集)。唯一可见的是函数调用的“副作用”,print(x)它当然会输出x.

于 2012-08-30T16:25:59.777 回答
1

该代码片段中有几个错误。由于您使用 Python 进行编程,因此您必须确保每个代码块都是缩进的。这就是你在 Python 中定义代码块的方式——通过缩进,而不是使用括号。

此外,(x) 没有任何意义。它只会打印 x 或那里的任何东西。

试试这个:

def printParity(x):
    if x % 2 == 0:
        print (x, "is even")
    else:
        print (x, "is odd")
于 2012-08-30T16:27:07.110 回答
0

您不需要在变量名周围加上括号。此外,您可以使用格式字符串使打印输出更清晰

def printParity(x):
    if x % 2 == 0:
        print ("%s is even" % x)
    else:
        print ("%s is odd" % x)
于 2012-08-30T16:23:16.587 回答