Найти, при какой итерационной функции получено ее максимальное значение? - PullRequest
0 голосов
/ 10 ноября 2019

Представьте, что у меня есть следующий цикл while. в то время как я достигаю 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". который я получил в 3-й итерации Как я могу найти его? Я вижу это вручную, но как я могу добавить строку кодов, которая также дает мне номер итерации i, который он получает "2", что является максимальным числом.

Спасибо

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Вы можете определить переменную 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)
0 голосов
/ 10 ноября 2019

Вы можете иметь переменную 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)
...