PYTHON如何将字符串转换为int或float

时间:2017-08-24 15:21:51

标签: python python-3.x

我尝试编写一个简单的计算器,但作为初学者,我不知道如何将输入字符串实际转换为float或int。我希望输出在2但不是2.0时为整数,而在浮点数时输出为2.5。但我对此进行了编码并输入1 + 1我仍然得到2.0

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")

2 个答案:

答案 0 :(得分:2)

最好添加if语句。例如

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

答案 1 :(得分:0)

您的号码以这种方式显示的原因是因为您将num1num2评估为浮点数。如果您想测试是否有int,可以尝试if int(num1) == num1:之类的内容来决定是否要应用其他格式。这导致改变它的显示方式:

如果您关注的是它的显示方式,那么由于您已经在使用format,请尝试类似

的内容
"{:.0f}".format(a)

这会使值四舍五入,但是,如果你确定它是一个整数,那么四舍五入除了视觉之外不会有任何影响。