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
,谁能简单地解释一下这个算法?
5条答案
按热度按时间ubby3x7f1#
我们是淘汰号码。
对于第一条件
if n1 > n2 and n1 > n3 and n1 > n4
,我们可以说,如果n1
大于n2、n3、n4,则n1
将是最大的。现在假设此条件不成立,即[n4,n2,n3]中存在大于n1的数字,因此我们将仅搜索该数字,现在我们仅在该范围内搜索即[n2,n3,n4]
因此我们遵循条件2,即
n2 > n3 and n2 > n4
,类似地,如果该条件为真,我们将得到n2作为最大数,但是如果它失败,我们可以说[n3,n4]作为给定数中的最大值因此我们将范围缩小到条件3,即n3〉n4,如果为真,我们可以说n3是最大数,如果不是,那么我们可以说n4是所有数中最大的数
2lpgd9682#
这个算法是计算4个数字中的最大值作为输入。
1.它需要输入4个不同数字中的第一个。
1.然后,它首先检查第一个数字,如果它大于所有其他数字,如果这是真的,它分配
greatest
作为第一个数字,如果不是:1.进入第二种情况,检查第二个数字是否大于第三和第四个数字。我们不检查第一个数字,因为它不大于其余数字。如果第二个数字大于,则分配
greatest
第二个数字并打印,否则再次打印:1.然后检查第三个,现在我们有两个较小的数字,即第一个和第二个。因此,如果第三个大于第四个,则将第三个数字分配给
greatest
,否则将分配第四个数字,因为所有其他数字都小于第四个数字。最后打印出最大的数字。
zsbz8rwp3#
我们的想法是消除。
第一个条件
if n1 > n2 and n1 > n3 and n1 > n4
我们将n1与n2、n3、n4进行比较。如果n1大于所有,则我们得到最大数(n1),但如果n1不是最大的,则第一个如果失败,因此我们将n1作为不是最大的而排除。类似地,我们检查n2是否是最大的,并且剩余数为(n3,n4)。
如此等等。
u7up0aaq4#
原因与计算机处理代码的顺序有关。我们只关心找到最大的数字。
if n1 > n2 and n1 > n3 and n1 > n4
如果这是TRUE,则我们知道n1是最大的数字,并且我们已经找到了要查找的内容,操作将停止。如果这是FALSE,则我们知道n1不是最大的数字,并且继续操作2。elif n2 > n3 and n2 > n4
如果我们在运算中走到这一步,我们已经从1知道n1不是最大数,因此我们不再需要比较任何数与n1,因为我们关心的是找到最大数。如果这是TRUE,则n2是最大数。如果这是FALSE,则我们知道n2不是最大数,并继续进行运算3。elif n3 > n4
现在我们知道n1不是最大的数,n2也不是最大的数,因此我们知道n3或n4是最大的数,我们所要做的就是比较剩下的两个数。如果这是真的,那么n3是最大的数,如果是假的,我们继续4。else
如果我们到了这个点,还没有什么是真的,那么我们知道n1不是最大的数,n2不是最大的数,n3也不是最大的数,只有4个数(n1,n2,n3,n4),所以我们现在知道n4是最大的数。一个重要的旁注:如果两个数字相同,程序仍将打印出最大的数字,但将查找该数字的第二个示例,而不是第一个示例。例如:说
然后程序会给出结果1)假2)假3)假4)真即使n1也是最大数,运算1也是假的,因为n1不大于n4(10不大于10)
希望这有帮助!
ibps3vxo5#
简短答复:
如果删除已知不是最大值的数字,则最大值不会更改。
例如,{ 3,6,9,1 }中的最大值也是{ 6,9,1 }中的最大值,{6,9,1 }中的最大值也是{ 9,1 }中的最大值。