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

时间:2012-08-30 16:22:43

标签: python python-3.x function

我目前正在阅读“How to think like a computer scientist: Learning with Python”(绿茶出版社,2002年1月。)

我无法使任何定义功能起作用。我完全按照书中的原样复制了它,但它没有用。我做错了什么?

以下是代码:

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

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

4 个答案:

答案 0 :(得分: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')

答案 1 :(得分: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的值。

答案 2 :(得分:1)

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

此外,(x)并不代表任何意义。它只会打印x或其他任何内容。

试试这个:

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

答案 3 :(得分:0)

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

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