# Using division operator to find
# minimum of three numbers
def smallest(x, y, z):
if (not (y / x)): # Same as "if (y < x)"
return y if (not (y / z)) else z
return x if (not (x / z)) else z
# Driver Code
if __name__== "__main__":
x = 78
y = 88
z = 68
print("Minimum of 3 numbers is",
smallest(x, y, z))
# This code is contributed
# by ChitraNayal
因此,我找到了上面的代码,这是在不使用min函数的情况下找到三个数字中最小的一个的最短方法。在此之后,我不太了解not(y/z)
的含义以及其余代码。这是否意味着布尔值
[假设这是Python 2,将两个整数相除使用integer division,它仅返回“整个”部分-即小数点左边的部分。因此,如果x小于y,则x / y将返回0,在布尔上下文中其值为False
,因此not(x/y)
等同于询问x是否小于y。
虽然您正在发现真实性和整数,并且需要一个简短的非最小实现,但下面的方法会起作用=)
def smallest(x, y, z):
return ((x,z)[z<x],(y,z)[z<y])[y<x]
def smallest(x, y, z):
if (not (y // x)): # Same as "if (y < x)"
return y if (not (y // z)) else z
return x if (not (x // z)) else z
print(smallest(3,5,7))
我认为使用底线分割(//)代替了普通的分割线(/)。这样,我们可以将零作为除法的返回值,例如3 // 5,零在python中被视为虚假值。
如果您正在寻找最短的方法(不使用min),另一种方法是对数组进行排序并获取第一个元素。
x = 78
y = 88
z = 68
numbers = [x, y, z]
numbers.sort()
print(numbers[0])