n1 = int(input("Number 1: "))
n2 = int(input("Number 2: "))
n3 = int(input("Number 3: "))
n4 = int(input("Number 4: "))
if n1 > n2 and n1 > n3 and n1 > n4:
greatest = n1
elif n2 > n3 and n2 > n4:
greatest = n2
elif n3 > n4:
greatest = n3
else:
greatest = n4
print(f" {greatest} is the greatest of the numbers.")
为什么我们不比较n2
与n1
,n3
与n1
和n2
?有人能简单地解释一下这个算法吗?
我们这里是消去数
对于第一条件if n1 > n2 and n1 > n3 and n1 > n4
,我们可以说n1
是最大的,如果它大于n2, n3, n4。
现在假设这个条件不成立,即在[n4, n2,n3]中存在一个大于n1的数,那么我们只搜索那个数,现在我们只搜索那个范围内的数,即[n2,n3,n4]
所以我们遵循条件2即n2 > n3 and n2 > n4
,同样这里如果这个条件成立,我们将得到n2为最大值,但如果它不成立,我们可以说[n3, n4]为给定数
中的最大值所以我们将范围缩小到条件3,即n3>N4,如果成立,我们可以说n3是最大的数,如果不成立,我们可以说N4是所有数中最大的
这个算法正在计算作为输入的4个数中的最大值。
- 从4个不同的数字开始输入
- 然后它首先检查第一个数字是否大于所有其他数字,如果这是真的,它将
greatest
分配为第一个数字,如果不是: - 它进入第二种情况,我们检查第二个数字是否大于第三和第四。我们不检查第一个,因为它不大于剩下的数。如果第二个数字大于,则分配
greatest
第二个数字并打印它,但如果不是,则再次: - 然后检查第三,现在我们有两个较小的数字,即第1和第2。因此,如果第三个数字大于第四个,它将第三个数字分配给
greatest
,否则它将分配第4个数字,因为所有其他数字都小于第4个数字。
最后输出最大的数字
这个想法是为了消除。
第一个条件if n1 > n2 and n1 > n3 and n1 > n4
我们比较n1与n2, n3, n4。如果n1大于所有数,那么我们得到了最大的数(n1),但如果n1不是最大的,那么第一个If失败,所以我们已经排除了n1不是最大的。
同样,我们检查n2是否最大,剩余数(n3, n4)。
等等
原因与计算机处理代码的顺序有关。我们只关心找到最大的数。
if n1 > n2 and n1 > n3 and n1 > n4
如果这是真的,那么我们知道n1是最大的数我们已经找到了我们要找的东西,行动将会停止。如果为FALSE,则我们知道n1不是最大的数并进行操作2。elif n2 > n3 and n2 > n4
如果运算到这里,我们已经从1中知道n1不是最大的数,因此我们不再需要将任何数与n1进行比较因为我们关心的是找到最大的数。如果这是真的,那么n2是最大的数。如果这是FALSE,那么我们知道n2不是最大的数3.elif n3 > n4
现在我们知道n1不是最大的数n2也不是最大的数,因此我们知道n3或n4是最大的数,我们所要做的就是比较这两个剩下的数。如果这是真的,那么n3是最大的数字,如果是假的,我们继续到4。else
如果我们到达这个点,还没有为真,那么我们就知道n1不是最大的数,n2不是最大的数,n3也不是最大的数。只有4个数字(n1, n2, n3, n4)所以我们现在知道n4是最大的数字。
一个重要的边注:如果两个数字相同,程序仍然会打印出最大的数字,但会找到该数字的第二个实例,而不是第一个实例。例如:说
n1 = 10
n2 = 5
n3 = 3
n4 = 10
则程序将执行结果:1)FALSE 2) FALSE 3) FALSE 4) TRUE尽管n1也是最大的数,但操作1是假的,因为n1不大于n4(10不大于10)
希望这对你有帮助!
简短回答:
如果你删除一个已知不是最大的数,最大的数不会改变。
。,{3,6,9,1}中最大的也是{6,9,1}中最大的,也就是{9,1}中最大的。