编写一个Division_round函数,它将一个分子、一个分母作为参数,一个四舍五入的布尔值rounded(默认为False)和一个十进制整数decimal(默认值为0)作为可选参数,并计算分子/分母分数的值(除非分母为零,在这种情况下,您的函数将显示错误消息并且不返回任何内容)。如果舍入布尔值等于False,函数将返回此结果而不舍入(如果在调用期间指定了小数,则将被忽略)。如果布尔值是True,结果将四舍五入到要求的小数位数(默认情况下,到最接近的整数)。要进行舍入,您将使用round (number_to_round, number_of_decimals)。
例子:
Division_arrondi (1,3) is 0.3333333333333333
Division_arrondi (1,3, rounded = True, decimal = 2) is 0.33
Division_arrondi (15,8) is 1.875
Division_arrondi (15,8, True) is 2
division_arrondi(15,8, arrondi=True, decimales=2) is 1.88
def Division_arrondi(x, y, rounded=False, decimal=0, **kwargs):
"""
:param x:分子
:param y: 分母
:param rounded:True开启四舍五入,False关闭四舍五入,默认False
:param decimal: 开始四舍五入后将要保留的位数 为0是返回一个整形数据
:return: 返回计算结果
"""
# 参数提取
if kwargs.get('arrondi') and rounded == False:
rounded = True
if kwargs.get('decimals') and decimal == 0:
decimal = kwargs.get('decimals')
# 判断是否开启四舍五入
if y!=0:
if rounded:
# 开启四舍五入
# 保留位数为0,round做四舍五入后转换整形返回
if decimal == 0:
return int(round(x / y, decimal))
else:
# 保留位数>0,round直接做做四舍五入返回
return round(x / y, decimal)
else:
# 未开启四舍五入,直接计算返回
return x / y
else:
return "分母不能为零"
print('Division_arrondi (1,3) is', Division_arrondi(1, 3))
print('Division_arrondi (1,3, rounded = True, decimal = 2) is', Division_arrondi(1, 3, rounded=True, decimal=2))
print('Division_arrondi (15,8) is', Division_arrondi(15, 8))
print('Division_arrondi (15,8) is', Division_arrondi(15, 0))
print('Division_arrondi (15,8, True) is', Division_arrondi(15, 8, True))
print('Division_arrondi(15,8, arrondi=True, decimales=2) is', Division_arrondi(15, 8, arrondi=True, decimales=2))
print('Division_arrondi(15,0, arrondi=True, decimales=2) is', Division_arrondi(15, 0, arrondi=True, decimales=2))
def Division_arrondi (a,b, rounded = False, decimal = 0):
if b==0:
print("False") #这里显示错误信息
return
c=a/b
if rounded and decimal<0:
print("False") # 需要进行四舍五入,保证decimal>=0
return
if rounded or decimal>0:
c=round(c,decimal)
return c
out=Division_arrondi (15,8, rounded = True, decimal = 2) #(指定小数忽略rounded)
print(out)