2017-08-24 12 views
1

私は単純な電卓を作成しようとしましたが、初心者として入力文字列をfloatまたはintに実際に変換する方法がわかりません。 2のときは出力を整数にしたいが、2.0の出力でないときは、出力は2.5のときに浮動小数点にする。しかし、私はあなたがフロートとしてnum1num2を評価しているので、私はまだ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を)' float型に値を変換しているので。また、関数は自分自身を呼び出すことはありません、あなたはそれを行う必要があります – smac89

+1

なぜあなたは使用しない関数を定義しましたか? – pointerless

+0

'literal_eval'を使って' 1'をintとして解析することもできますが、 '1.0'をfloatとして解析することもできます。 –

答えて

2

if文を追加する方がよいでしょう。例えば

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

あなたの数字がそのように表示している理由であるを取得し、これを符号化して1 + 1に入りました。 intを持っているかどうかをテストしたい場合は、if int(num1) == num1:のようなものを試して、追加の書式を適用するかどうかを決めることができます。それは、それがどのように表示するかを変更することにつながる:

すでにformatを使用しているので、あなたは、それがどのように表示するかであると懸念しているすべてが、しかし、値を丸めます

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

このような何かをしようとすると、それがintであることが確かであれば、それを四捨五入してもビジュアルからの影響はありません。

関連する問題