2015-10-16 138 views
0

我的代碼是ValueError異常:無效的基數爲10字面INT():「5.0」

# put your python code here 
a=int(input())     #a for first number 
b=int(input())     #b for second number 
op=input()      #c for operation 
if op=='+': print(a+b) 
elif op=='-': print(a-b) 
elif op=='/': 
    if b!=0: print(a/b) 
    else: print('Деление на 0!') #'Division by 0!' 
elif op=='*': print(a*b) 
elif op=='mod': print(a%b) 
elif op=='pow': print(a**b) 
elif op=='div': print(a//b) 

我的電腦做工不錯,但我想學的課程,其中一個解釋給我一個這樣的錯誤:

ValueError: invalid literal for int() with base 10: '5.0' 
+0

您使用的是什麼版本的Python? 'a = int(input())'並輸入「5.0」將在2.7中工作,但不是3.X. – Kevin

+0

@凱文Python 3.5 – pookeeshtron

回答

3

您正在嘗試將您的字符串轉換爲一個浮點形式表示爲int。這不起作用。正如INT()的幫助下,指定:

If x is not a number or if base is given, then x must be a string, 
| bytes, or bytearray instance representing an integer literal 

請看下面的例子來幫助說明這一點:

>>> x = int("5.5") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '5.5' 
>>> x = float("5.5") 
>>> x 
5.5 
>>> 

改變INT浮動後運行與下面的測試輸入你的代碼,收益率如下:

# inputs 
5.5 
6.6 
mod 
# output 
5.5 
+0

好的。但是接下來會出現新問題: 'ZeroDivisionError:float modulo' – pookeeshtron

+1

然後當你遇到這種情況時使用'int(a)'和'int(b)'。 – KronoS

0

這是因爲你試圖將浮點數字符串轉換爲整數。由於您正在嘗試創建計算器,因此請使用float()而不是int()。如果你真的只想要整數使用int(float(input()))

相關問題