我正在编写一个名为“计算器”的程序,它接受一组数字并根据输入执行操作。例如: 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)
只需将
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)