找出哪个迭代函数的最大值



想象一下我有下面的while循环。当我达到6时,它生成从-100到i的随机数。我想找出5次迭代中的最大次数。我默认的最大数字是-99。在每次迭代中,它将生成的值与-99进行比较。如果它大于-99,我将其替换,否则我将-99保留为最大numver。通过以下代码,我可以找到它但我也想知道它在哪一次迭代中得到了最大值:

import random
m=-99
i=1
k=0
while i<6:
a = random.randint(-100,i)
b = random.randint(-100,i+1)
print("a: ", a)
print("b: ", b)
if a < b & b>m:
m=b
print('1st', i)
elif a < b & b<m:
m=m
print('2nd', i)
elif a > b & a>m:
m=a
print('3rd', i)
elif a > b & a<m:
m=m
print('4th', i)
print('m: ', m)
print('--------')
i = i+1

a:  -77
b:  -34
1st 1
m:  -34
--------
a:  -44
b:  -45
4th 2
m:  -34
--------
a:  -24
b:  2
1st 3
m:  2
--------
a:  -18
b:  -43
4th 4
m:  2
--------
a:  -80
b:  -37
2nd 5
m:  2
--------

正如你从输出中看到的,5次迭代中的最大次数是"2"。我在第三次迭代中得到的我怎样才能找到它?我手动看到它,但我如何添加代码行,这也给了我迭代I的muber,它得到"2",这是最大数。

感谢

您可以定义变量pos,它描述变量m的最大值或值增加的第一个位置。所以你的代码可能是这样的:

import random
m=-99
i=1
pos=-1
k=0
while i<6:
a = random.randint(-100,i)
b = random.randint(-100,i+1)
print("a: ", a)
print("b: ", b)
if a < b & b>m:
pos=i
m=b
print('1st', i)
elif a < b & b<m:
m=m
print('2nd', i)
elif a > b & a>m:
pos=i
m=a
print('3rd', i)
elif a > b & a<m:
m=m
print('4th', i)
print('m: ', m)
print('--------')
i = i+1
print(pos)

您可以有一个变量max_iter来跟踪哪个迭代获得了最大值。每次更新m的值以获得当前迭代时,它都会更新。

import random
m=-99
max_iter=0
i=1
k=0
while i<6:
a = random.randint(-100,i)
b = random.randint(-100,i+1)
print("a: ", a)
print("b: ", b)
if a < b & b>m:
m=b
max_iter=i
print('1st', i)
elif a < b & b<m:
m=m
print('2nd', i)
elif a > b & a>m:
m=a
max_iter=a
print('3rd', i)
elif a > b & a<m:
m=m
print('4th', i)
print('m: ', m)
print('--------')
i = i+1
print(max_iter)

最新更新