Как реализовать функцию "цикл", чтобы найти общее расстояние и время? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть задание из 3 частей, которое я понимаю, что делать, просто делать это сбивает с толку.Я застрял в поисках того, как написать этот код для Часть B. (я понимаю Часть A).

A) Используйте цикл для генерации 1000 случайных целых чисел в диапазоне от 10 до 20(включительно).Найти среднее число ваших 1000 случайных чисел.Оно должно быть близко к 15.

import random
from random import randrange

def main():
 numbers = [] 
  for count in range(1000):
    number = random.randrange(10,21)
    numbers.append(number)
  print(sum(numbers)/len(numbers))

main()

B) Предположим, что длина трассы составляет 2 мили.Ваша лошадь может бегать максимум 40 футов за одну секунду, но в течение любой данной секунды может бегать любое количество футов от 4 до 40. Ваша программа должна иметь цикл, который вычисляет положение лошадей в конце каждой секунды, пока лошадь не пересечетФинишная черта.Каждую секунду генерируйте случайное целое число и добавляйте его в текущую позицию лошадей. Выходными данными должно быть количество секунд, необходимое для завершения гонки. .

Пока я знаю, что должен делать (вот мой набросок), я просто не знаю, как кодироватьэто:

Я знаю, что 1 миля равна 5280, поэтому 2 мили - это 10560.

Я знаю, что диапазон для любой заданной секунды составляет [4,41).

def race():
 #position variable
 #position variable
 #while loop condition
    #increment seconds
    #add random value to position
#return elapsed seconds

Я могу выполнить часть C, в которой просит 1000 гонок и секунд, чтобы закончить гонку.

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Хотя это очень похоже на то, что ты делаешь за тебя домашнее задание, вот и все.Если вы снова столкнетесь с подобной проблемой, попробуйте «перевести» ваши комментарии в код, один за другим - вы почти закончили.

def race()
    goal = 10560 # 2 miles are 10560 feet
    current_position = 0 # position variable
    elapsed_seconds = 0 # time variable
    while current_position < goal: # while loop condition
        elapsed_seconds += 1 # increment seconds
        current_position += random.randrange(4,41) # add random value to position
    return relapsed_seconds
0 голосов
/ 06 октября 2018

Это можно сделать с помощью цикла for, просто отслеживать current_pos и время

import random

lista = [random.randint(10, 20) for i in range(1000)]
avg = sum(lista)/len(lista)
track = 2 * 5280
current_pos = 0
seconds = 0
while current_pos <= track:
    current_pos += random.randint(4, 40)
    seconds += 1
print('{} seconds to finish the race'.format(seconds))
# 492 seconds to finish the race
0 голосов
/ 05 октября 2018

Вы на это к ответу.Я не буду решать это для вас, но вот как я бы пошел после этого.

Ваш цикл while должен проверить и посмотреть, пересекли ли вы финишные черты, поэтому

while finished is False:
    if race_total_distance - distance_so_far <= 0:
        finished = True
        # record your race results
    else:
    # do your race calcs here and go again

Тогдаза каждую секунду вам нужно увеличивать время += 1 и добавлять в переменную distance_so_far для этих секций футы, которые вы уже показали, как это сделать.

...