我目前正在阅读“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)是奇数或偶数。
答案 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)