Как найти минимальное / максимальное значение и создать список (python) - PullRequest
1 голос
/ 16 апреля 2020

Пожалуйста, не обращайте внимания на мой неиспользуемый импорт!

Я пытался создать список, чтобы найти минимальное и максимальное значения "pa_walk", но я просто мог понять, как это сделать, каждый раз, когда я пытался это сказать об ошибке.

import random
from math import sqrt
from math import hypot
import statistics


random.seed(20190101)

def takeOnePaStep():
    direction = random.randint(0,3)
    if direction == 0:
        return (0,1)
    elif direction == 1:
        return (1,0)
    elif direction == 2:
        return (0,-1)
    elif direction == 3:
        return (-1,0)


def randomWalkPa(steps):
    pa = [0,0]
    for _ in range (steps):
        nextStep = takeOnePaStep()
        pa[0] += nextStep[0]
        pa[1] += nextStep[1]
    pasDistance = hypot(pa[0],pa[1])
    return pasDistance

 #   paMean = statistic.mean(distance)

steps = int(input("Please enter the number of steps: "))
tries = int(input("How many times should I perform the experiment? "))

for _ in range(tries):
    pa_walk= randomWalkPa(steps)
    print(pa_walk)

1 Ответ

0 голосов
/ 16 апреля 2020


Я догадываюсь, это потому, что ваша функция randomWalkPa(steps) возвращает число с плавающей точкой, поэтому вам сначала нужно создать список (в приведенном ниже примере я только что создал pa_walk список. l oop просто .append расстояние для каждой попытки до этого списка. Наконец, вы можете вызвать встроенные функции max() и min(), чтобы получить максимальное и минимальное расстояние. Я удалил команды печати для min и макс вызов, чтобы просто получить результаты один раз

pa_walk = []
for _ in range(tries):
    pa_walk.append(randomWalkPa(steps))

print(f"The Maximum Distance reached was: {max(pa_walk)}, in trial: {pa_walk.index(max(pa_walk))}")
print(f"The Minimum Distance reached was: {min(pa_walk)}, in trial: {pa_walk.index(min(pa_walk))}")

После рекомендации в комментариях приведен полный код (я ничего не изменил, кроме последних 5 строк)

import random
from math import sqrt
from math import hypot
import statistics


random.seed(20190101)

def takeOnePaStep():
    direction = random.randint(0,3)
    if direction == 0:
        return (0,1)
    elif direction == 1:
        return (1,0)
    elif direction == 2:
        return (0,-1)
    elif direction == 3:
        return (-1,0)


def randomWalkPa(steps):
    pa = [0,0]
    for _ in range (steps):
        nextStep = takeOnePaStep()
        pa[0] += nextStep[0]
        pa[1] += nextStep[1]
    pasDistance = hypot(pa[0],pa[1])
    return pasDistance

 #   paMean = statistic.mean(distance)

steps = int(input("Please enter the number of steps: "))
tries = int(input("How many times should I perform the experiment? "))

pa_walk = []
for _ in range(tries):
    pa_walk.append(randomWalkPa(steps))

print(f"The Maximum Distance reached was: {max(pa_walk)}, in trial: {pa_walk.index(max(pa_walk))}")
print(f"The Minimum Distance reached was: {min(pa_walk)}, in trial: {pa_walk.index(min(pa_walk))}")

Редактировать:
Небольшое замечание: в python принято использовать подчеркивания, а не верблюд. Это означает, что функция randomWalkPa() будет лучше называться random_walk_pa(). Это не обязательно, чтобы код работал и полностью зависит от вас

...