4

私は現在、「コンピュータ科学者のように考える方法: Python で学ぶ」(Green Tea Press、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"、2 番目の要素として評価します。ただし、そのタプルに対しては何もしないので、何も表示されません (名前のないタプルはすぐにガベージ コレクションされます)。print(x)目に見える唯一のものは、もちろん の値を出力する関数呼び出しの「副作用」ですx

于 2012-08-30T16:25:59.777 に答える
1

そのコード スニペットにはいくつかの間違いがあります。Python でプログラミングしているため、すべてのコード ブロックがインデントされていることを確認する必要があります。これが、Python でコード ブロックを定義する方法です。括弧を使用するのではなく、インデントによって定義します。

また、(×)は何の意味もありません。代わりに 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 に答える