-2

ユーザーに長方形の長さと幅を同時に入力させようとしています。

length,width = float (raw_input("What is the length and width? ")).split(',')

ただし、プログラムを実行して、3,5などの2つの変数を入力すると、float()型のリテラルが無効であるというエラーが表示されます。

4

3 に答える 3

2

これは、コンマで区切られた2つの数値を入力しているが、その値をピリオドで分割しているためです。カンマで分割すると、はるかにうまく機能するはずです。

于 2012-12-05T23:57:54.720 に答える
1

また、おそらく整数にキャストすることをお勧めします。

prompt = "what is the length and width? "
inpt = raw_input(prompt)
length, width = [int(i) for i in inpt.split(',')]
于 2012-12-06T00:03:03.423 に答える
1

まず、なぜこれが失敗するのですか?

float (raw_input("What is the length and width? ")).split(',')

split(',')文字列を文字列のシーケンスに分割します。文字列のシーケンスを呼び出すことはできませんfloat。単一の文字列のみを呼び出すことができます。そのため、エラーには「float型の無効なリテラル」と表示されます。

シーケンス内のすべての値で同じ関数を呼び出したい場合は、次の2つの方法があります。

リスト内包表記(またはジェネレータ式)を使用します。

[float(x) for x in raw_input("What is the length and width? ")).split(',')]

またはmap関数:

map(float, raw_input("What is the length and width? ")).split(','))

リスト内包表記を使用します。これは、BDFLが好むものであり、他のことを行うのが簡単なためですがx[2]、この場合はそれほど重要ではありません。どちらの方法でも十分に単純であり、両方の意味を学ぶ必要があります。

于 2012-12-06T00:46:37.440 に答える