Я догадываюсь, это потому, что ваша функция 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()
. Это не обязательно, чтобы код работал и полностью зависит от вас