2016-06-20 6 views
2

記事でディスカウントを計算するための非常に簡単なコードを書こうとしています。 。コードで例外がある:例外: "float型のnon-intでシーケンスを掛け算することはできません"

Traceback (most recent call last): 
    File "C:/Users/basam/AppData/Local/Programs/Python/Python35/discounts.py", line 3, in <module> 
    discount=0.1*price 
TypeError: can't multiply sequence by non-int of type 'float' 

コード:

price=input('how much is your item?') 
if int(price) <= 10: 
    discount=0.1*price 

誰かが問題が何であるか

答えて

2

@Silvio Mayoloが述べたように、問題はあなたのことであるに助言することはできますか?価格変動String型です。 、あなたは小数点以下の値を持つことができる「お金」を扱っている検討 - あなたは)(あなたの入力をラップ計算はいっそ

price = int(input('how much is your item?')) 
if price <= 10: 
    discount = 0.1 * price 

print(discount) 
>> 0.5 

かを動作するために許可する必要があり、整数への入力値をキャストするために呼び出すことができますむしろ、「int型

price = float(input("how much is item 2?")) 
if price <= 10: 
    discount = 0.1 * price 

print(discount) 
>> 0.5 
+1

これは完全に正しいわけではありません。 intを浮動小数点で掛けることができます。問題は、 'price'は数字ではなく文字列であることです。 –

+0

良い点....! – AK47

-1

変更キーがint(price)あるdiscount=0.1*float(price)

5

よりも、 'フロート' タイプを使用します。 inputコマンドは、変数priceに格納されている文字列を返します。

2行目のpriceは、int(price)という呼び出しによって数値に変換されますが、その結果はどこにも格納されません。比較のために使用され、廃棄されます。だから、3行目で乗算すると、文字列の何倍も乗算しようとしています。

関連する問題