如果两个数字之间发生完美除法,我希望将结果转换为整数,但如果两个数字之间没有发生完美除法,则不应进行任何更改。 例如,6/2
给出的结果3.0
。由于这是完美划分,因此3.0
应转换为3
。另一方面,如果我有14/4
,它给出了结果3.5
,它应该保持原样,因为完全除法没有发生。
这里所说的完美除法是指a
除以b
得到一个整数
此函数检查除法是否有余数。如果是这样,则它不是整数。
def divide_and_conquer(a, b):
return a / b if a % b else a // b
以下是有关如何实现这一目标的分步解决方案
# the numbers
num = 34
divisor = 17
# do the division
modula = num//divisor # modulus
quotient = num/divisor # normal division
# check if division is perfect
if modula == quotient :
result = int(quotient)
else:
result = quotient
在 python 中,你可以使用//来划分整数,并得到一个整数结果。您还可以使用 % 来确定两个数字是否完美相除(% 返回余数,当且仅当两个数字完美相除时,余数始终为零(。要完成您的要求,只需:
a = 6
b = 2
if a % b == 0:
result = a // b
else:
result = a / b
也就是说,您也可以简单地运行标准除法并将结果转换为整数......
result = a / b
if result % 1 == 0:
result = int(result)
但是,在这两种情况下,您可能都希望检查所编码内容的更广泛上下文,因为如果变量有时是一种数据类型,而有时是不同的数据类型,则可能会产生真正的问题 - 最好在每种情况下都将值保留为浮点数,直到您需要将其变为整数为止。
注意:在两个不能完全除法的整数上使用"//"仍然会产生一个整数,因为python会简单地忽略余数。 6//4 = 1, 15//2 = 7.
您可以使用//
除法来获取int
:
def divide(a, b):
return a / b if a % b else a//b
divide(2, 5) # 0.4 (float)
divide(10, 5) # 2 (int)