找到在哪个迭代函数获得最大值?
Find at which iteration function got its max value?
假设我有以下 while 循环。当 i 达到 6 时,它会生成从 -100 到 i 的随机数。
我想在 5 次迭代中找到最大数量。我的默认最大数量是 -99。在每次迭代中,它将生成的值与 -99 进行比较。如果它大于 -99 我替换它,否则我将 -99 保留为最大数字。通过以下代码我可以找到它
但我也想找到它在哪个迭代中获得最大值:
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”。我在第三次迭代中得到的
我怎样才能找到它?我手动看到它,但是我如何添加代码行,这也给了我迭代的数量,它得到“2”,这是最大数量。
谢谢
您可以使用变量 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)
您可以定义一个变量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)
假设我有以下 while 循环。当 i 达到 6 时,它会生成从 -100 到 i 的随机数。 我想在 5 次迭代中找到最大数量。我的默认最大数量是 -99。在每次迭代中,它将生成的值与 -99 进行比较。如果它大于 -99 我替换它,否则我将 -99 保留为最大数字。通过以下代码我可以找到它 但我也想找到它在哪个迭代中获得最大值:
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”。我在第三次迭代中得到的 我怎样才能找到它?我手动看到它,但是我如何添加代码行,这也给了我迭代的数量,它得到“2”,这是最大数量。
谢谢
您可以使用变量 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)
您可以定义一个变量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)