根据用户在计算器中给出的数据类型输出结果 [Python]

Output result based on the data type given by user in a calculator [Python]

如何输出表达式的结果,如果用户输入浮点数和整数,结果将包括小数,如果用户同时以整数形式给出,结果将不包括小数.

示例:

num_1 = float(input("\nEnter first number: "))

opr = input("Enter math operator: ")

num_2 = float(input("Enter second number: "))

if opr == "+":
    print(num_1 + num_2)
elif opr == "-":
    print(num_1 - num_2)
else:
    print("Invalid math operator")

>>> Enter first number: 2.5
>>> Enter math operator: +
>>> Enter second number: 3

5.5

上面的代码适用于浮点数,这是因为输入已转换为浮点数以避免 ValueError。但结果将始终是一个浮点数。我怎样才能使 2 + 2 = 4 而不是 4.0

解决方案 1

一个简单直接的解决方案是将其转换为 int 并检查它的值是否与它的 float 对应部分相同。

例如,如果float_output=4.0,则int_output将设置为4。而4 == 4.0的逻辑将以True结束。因此,在本例中 int_output 设置为 final_output

否则,考虑 float_output=4.5,它的 int_output 将设置为 4。而 4 == 4.5 的逻辑将以 False 结束。因此,float_output设置为final_output

完整代码如下:

num_1 = float(input("Enter first number: "))

opr = input("Enter math operator: ")

num_2 = float(input("Enter second number: "))

float_output = None

if opr == "+":
    float_output = num_1 + num_2
elif opr == "-":
    float_output = num_1 - num_2
else:
    print("Invalid math operator")

if float_output is not None:
    int_output = int(float_output)
    if int_output == float_output:
        final_output = int_output
    else:
        final_output = float_output
    print(final_output)

解决方案 2

您可以使用 float.is_integer() 这是浮动的内置函数来自动执行此检查。

在这种情况下你会这样做:

num_1 = float(input("Enter first number: "))

opr = input("Enter math operator: ")

num_2 = float(input("Enter second number: "))

float_output = None

if opr == "+":
    float_output = num_1 + num_2
elif opr == "-":
    float_output = num_1 - num_2
else:
    print("Invalid math operator")

if float_output.is_integer():
    print(int(float_output))
else:
    print(float_output)