Python 3.2.2中的用户定义函数(def)

Python 3.2.2中的用户定义函数(def),python,python-3.x,function,Python,Python 3.x,Function,我现在读的是“”(绿茶出版社,2002年1月) 我不能让任何define函数工作。我照着书中的原样复制了它,但它不起作用。我做错了什么 代码如下: def printParity(x): if (x)%2 == 0: print (x), ("is even") else: print (x), ("is odd") 它只打印(x)输入,而不是(x)是奇数或偶数。您不需要在变量名周围加括号。此外,还可以使用格式字符串使打印输出更加清晰 def p

我现在读的是“”(绿茶出版社,2002年1月)

我不能让任何define函数工作。我照着书中的原样复制了它,但它不起作用。我做错了什么

代码如下:

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

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

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

def printParity(x):
    if x % 2 == 0:
        print ("%s is even" % x)
    else:
        print ("%s is odd" % x)
你想要:

def printParity(x):
    if x % 2 == 0:
        print(x, "is even")
    else:
        print(x, "is odd")
您的声明
print(x),(“是偶数”)

实际上正在生成一个元组,从控制台可以看到:

>>> x=2
>>> print (x), ("is even")
2
(None, 'is even')

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

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

正如DSM所指出的,您的代码正在生成一个元组,该元组将计算
print(x)
的结果作为其第一个元素(并且由于
print()
不返回任何内容,因此该结果是
None
),而
“甚至是”
作为其第二个元素。但是,它对该元组没有任何作用,因此不会发生任何可见的事情(并且未命名的元组很快将被垃圾收集)。唯一可见的是函数调用的“副作用”
print(x)
,它当然会输出
x
的值。因为您是用Python编程的,所以必须确保每个代码块都缩进。这就是在Python中定义代码块的方式——通过缩进,而不是使用括号

而且,(x)也没有任何意义。它只会打印x或者其他任何东西

试试这个:

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

因为OP使用的是Python 3,这将产生一个
语法错误
。只是为了澄清:@DSM的评论在这里是过时的,因为后来发生了编辑。@vaidik如果答案被证明有误导性,可以编辑答案。我想@glglglgl是可能的。