3

整数(z)がxとyの範囲内にあるかどうかをチェックするものを書き込もうとしています。xは最小数、yは最大数です。これを行うには、zが最小数よりも小さいか、最大数よりも大きいかどうかを確認します。これらのいずれかが真の場合は無効を返し、そうでない場合は確認します。チェック値の最大値、最小値、および数は、raw_inputによって決定されます。コードは次のとおりです。

int(x = raw_input('x:\n')) #max number
int(y = raw_input('y:\n')) #min number
int(z = raw_input('z:\n')) #number to check.
if z < y:
    print 'invalid.'
elif z > x :
    print 'invalid.'

x値を正しく入力できますが、y値を入力しようとすると、次のエラーが発生します。

Traceback (most recent call last):
  File "C:/Python27/random/bark", line 2, in <module>
    int(y = raw_input('y:\n')) #min number
TypeError: 'y' is an invalid keyword argument for this function

私は自分が何を間違っているのかわかりません、そして私は答えなしで他の場所に尋ねました。

4

4 に答える 4

10

これの代わりに:

int(x = raw_input('x:\n')) #max number

これを試して:

x = int(raw_input('x:\n')) #max number

他の入力ステートメントについても同様です。

組み込みのPython関数raw_input()は、「入力から行を読み取り、それを文字列に変換します」。入力を整数として使用するために使用するには、「文字列または数値を単純な整数に変換する」int()関数を使用してをに変換する必要がありますstring。あなたのコードからはあなたが基本的な考えを持っているように見えますが、あなたの構文は少し絡み合っていました。int

于 2012-07-14T00:00:19.783 に答える
4

Cとは異なり、Python代入ステートメントは引数の式として使用できません。

たとえば、次のことは単に合法ではなく、次のようになりますSyntaxError

if name = name + 1:
    pass

TypeErrorこの場合の代わりにを受け取る理由SyntaxErrorは、Pythonのキーワード引数機能のためです。Pythonでは、名前付き引数を次の形式で関数に渡すことができますfoo(arg1=0, second_argument="hello")。したがって、通訳者はこれがあなたがやろうとしていることだと考えます。

受信したエラーメッセージは、Pythonインタープリターがキーワード引数をに渡していると考えた結果ですint()int()もちろん、キーワード引数「x」(または「y」または「z」)を使用しないため、エラーが発生します。これは、代わりに行うべきことです。

x = int(raw_input("x:\n"))
y = int(raw_input("y:\n"))
z = int(raw_input("z:\n"))
于 2012-07-14T00:05:45.147 に答える
0

これを試して

x,y,z, = int(raw_input("x:")),int(raw_input("y:")),int(raw_input("z:"))

これが出力です

>>> x,y,z, = int(raw_input("x:")),int(raw_input("y:")),int(raw_input("z:"))
x:5
y:6
z:7
>>> x
5
>>> y
6
>>> z
7
于 2012-07-14T00:02:29.610 に答える
0

より短いバージョンが必要な場合は、次のことを試してください。

x,y,z = (int(raw_input(var+':')) for var in "xyz")

(Joran Beasleyのバージョンと同じように機能します)

于 2012-07-14T01:35:46.507 に答える