2017-08-24 123 views
1

我試圖編寫一個簡單的計算器,但作爲初學者我不知道如何實際將我的輸入字符串轉換爲float或int。我想要的輸出是整數,當它是2但不是2.0而輸出爲2.5時,它的一個浮點數。但我這個編碼並進入1 + 1我仍然得到2.0PYTHON如何將字符串轉換爲int或float

from ast import literal_eval 

# User input a simple calculation 
num1, operator, num2 = input('Please enter a simple math calculation ').split() 
num1 = float(num1) 
num2 = float(num2) 

# Convert string into either int or float 
def convertString1 (num1): 
    val = literal_eval(num1) 
    return isinstance(val, int) or (isinstance(val, float) and val.is_integer()) 
def convertString2 (num2): 
    val = literal_eval(num2) 
    return isinstance(val, int) or (isinstance(val, float) and val.is_integer()) 


# Condition to perform calculation and output 
if operator == "+" : 
    print("{} + {} = {}".format(num1, num2, num1+num2)) 
elif operator == "-" : 
    print("{} - {} = {}".format(num1, num2, num1-num2)) 
elif operator == "*" : 
    print("{} * {} = {}".format(num1, num2, num1*num2)) 
elif operator == "/" : 
    print("{}/{} = {}".format(num1, num2, num1/num2)) 
else : 
    print("Syntax error") 
+3

因爲要轉換的值漂浮... 'NUM1 =浮子(NUM1) NUM2 =浮子(NUM2)'。此外,函數不會自行調用,您必須這樣做 – smac89

+1

爲什麼您定義了不使用的函數? – pointerless

+0

你也可以用'literal_eval'來解析'1'作爲int,但將'1.0'解析爲一個float。 –

回答

2

最好添加if語句。例如

if int(res) == res: 
    res = int(res) 
0

您的數字顯示這樣的原因是因爲你正在評估num1num2爲浮動。如果你想測試你是否有一個int,你可以嘗試類似if int(num1) == num1:來決定是否要應用其他格式。這導致到改變它如何顯示:

如果所有你關心的是如何顯示的,因爲你已經在使用format,嘗試像

"{:.0f}".format(a) 

這回合的分數值,但是,如果你確定它是一個整數,那麼四捨五入除了視覺之外沒有任何影響。