2009-07-30 3 views
1
>>> 
Enter muzzle velocity (m/2): 60 
Enter angle (degrees): 45 
Traceback (most recent call last): 
    File "F:/Python31/Lib/idlelib/test", line 9, in <module> 
    range() 
    File "F:/Python31/Lib/idlelib/test", line 7, in range 
    Distance = float(decimal((2*(x*x))((decimal(math.zsin(y)))*(decimal(math.acos(y)))))/2) 
TypeError: can't multiply sequence by non-int of type 'str' 

これは本当に明白ですが、このエラーが発生するのはなぜですか?TypeError: 'str'型の非整数でシーケンスを掛けることはできません

答えて

4

。 代わりにinput()を使用してください。 Intを返します。数字のみを入力するか、input()がエラーを発生させる(文字列の場合など)。 また、変数に適切な名前を付けるといいでしょう。 xとyはあまり伝えません。

5
>>> '60' * '60' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't multiply sequence by non-int of type 'str' 

2つの文字列を一緒に乗算しようとしています。ユーザーからの文字列をint()またはfloat()を使用して数値に変換する必要があります。

また、私はあなたが何をしているのかよく分かりませんdecimal; floatに戻って変換、あなたはモジュールを呼び出すしようとしているように見えます(タイプがでモジュール、decimal.Decimalである)が、いくつかの浮動小数点演算を行う後進に変換する際に多くのポイントはありませんし、

問題の原因となるコードを送信してください(対話とトレースバックを維持してください)。しかし、まずエラーを引き起こしている間に、可能な限りコードを試してみてください。これはデバッグの重要なステップです。あなたが入力を取得するためraw_input()を使用している

x = int(x) 
y = int(y) 
Distance = float(decimal((2*(x*x))((decimal(math.zsin(y)))*(decimal(math.acos(y)))))/2) 
0

:あなたは整数にコンソールから取得したデータを変換する必要があり

+5

私は、input()の代わりにraw_input()を使用し、floatに変換する(または "try:"を変換するか、エラーを発生させる)ことをお勧めします。現在のinput()は、後のpythonバージョンで削除される予定です。レコードの場合は – user141446

+0

、raw_inputはinput()に置き換えられました。 – zero01alpha

関連する問題