如何为具有一组整数值的输入获取整数输出

问题描述 投票:0回答:1

我正在编写一个名为“计算器”的程序,它接受一组数字并根据输入执行操作。例如: python计算器.py add 8 2 3,我应该得到13。但我得到13.0(作为浮点数)。我可以做些什么不同的事情,以便获得整数输入的整数输出?

import sys
def add(*args):
    return sum(args)
def subtract(*args):
    result = args[0]
    for num in args[1:]:
        result -= num
    return result
def multiply(*args):
    result = 1
    for num in args:
        result *= num
    return result
def divide(*args):
    result = args[0]
    for num in args[1:]:
        if num == 0:
            return "Error: Division by zero"
        result /= num
    return round(result)
def calculate(operation, *nums):
    if operation == 'add':
        return add(*nums)
    elif operation == 'subtract':
        return subtract(*nums)
    elif operation == 'multiply':
        return multiply(*nums)
    elif operation == 'divide':
        return divide(*nums)
    else:
        return "Error: Invalid operation"
def main():
    args = sys.argv[1:]

    if len(args) == 0:
        print("Error: Missing operator", file=sys.stderr)
        sys.exit(1)

    operation = args[0]
    nums = []

    if operation not in ['add', 'subtract', 'multiply', 'divide']:
        print(f"Error: Invalid operation '{operation}'", file=sys.stderr)
        sys.exit(1)

    if len(args) < 2:
        print("Result will be 0", file=sys.stderr)
        sys.exit(1)

    try:
        nums = [float(num) for num in args[1:]]
    except ValueError:
        print("Error: Invalid number provided. All input values must be numeric.", file=sys.stderr)
        sys.exit(1)

    try:
        result = calculate(operation, *nums)
        if any(isinstance(num, float) for num in nums):
            result = float(result)
        elif all(num.is_integer() for num in nums):
            result = int(result)
        print("Result will be", result)
    except Exception as e:
        print(e, file=sys.stderr)
        sys.exit(1)

python type-conversion
1个回答
0
投票

只需将

float
更改为
int

def main():
    args = sys.argv[1:]

    if len(args) == 0:
        print("Error: Missing operator", file=sys.stderr)
        sys.exit(1)

    operation = args[0]
    nums = []

    if operation not in ['add', 'subtract', 'multiply', 'divide']:
        print(f"Error: Invalid operation '{operation}'", file=sys.stderr)
        sys.exit(1)

    if len(args) < 2:
        print("Result will be 0", file=sys.stderr)
        sys.exit(1)

    try:
        nums = [int(num) for num in args[1:]]
    except ValueError:
        print("Error: Invalid number provided. All input values must be numeric.", file=sys.stderr)
        sys.exit(1)

    try:
        result = calculate(operation, *nums)
        if any(isinstance(num, int) for num in nums):
            result = int(result)
        elif all(num.is_integer() for num in nums):
            result = int(result)
        print("Result will be", result)
    except Exception as e:
        print(e, file=sys.stderr)
        sys.exit(1)

© www.soinside.com 2019 - 2024. All rights reserved.