Python 找出哪个迭代函数得到了它的最大值?

Python 找出哪个迭代函数得到了它的最大值?,python,loops,for-loop,while-loop,transliteration,Python,Loops,For Loop,While Loop,Transliteration,假设我有以下while循环。当i达到6时,它生成从-100到i的随机数。 我想找出5次迭代中的最大次数。我的默认最大值是-99。在每次迭代中,它将生成的值与-99进行比较。如果它大于-99,我将替换它,否则我将-99保留为max numver。通过下面的代码,我可以找到它 但我还想找出它在哪个迭代中得到了最大值: import random m=-99 i=1 k=0 while i<6: a = random.randint(-100,i) b = random.rand

假设我有以下while循环。当i达到6时,它生成从-100到i的随机数。 我想找出5次迭代中的最大次数。我的默认最大值是-99。在每次迭代中,它将生成的值与-99进行比较。如果它大于-99,我将替换它,否则我将-99保留为max 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
--------
随机导入
m=-99
i=1
k=0
而即时通讯:
m=b
打印('1',i)
如果am:
m=a
打印('3',i)

elif a>b&a您可以使用变量
max\u 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)
随机导入
m=-99
最大值=0
i=1
k=0
而即时通讯:
m=b
max_iter=i
打印('1',i)
如果am:
m=a
最大值=a
打印('3',i)

elif a>b&a您可以定义一个变量
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)
随机导入
m=-99
i=1
位置=-1
k=0
而即时通讯:
pos=i
m=b
打印('1',i)
如果am:
pos=i
m=a
打印('3',i)

elif a>b&a为什么只在第一个和第四个条件下编写
pos=i
?因为只有在这些条件下,最大值才会改变。如果最大值在迭代中没有改变,则表示当前找到的值等于或小于目前为止的最大值。因此,在这些条件下,我们不需要更新
pos
。我明白了。谢谢,我明白了!