如何实现“ while循环”功能来查找总距离和时间?

时间:2018-10-05 05:33:12

标签: python python-3.x pico

我有一个由三部分组成的作业,我知道该怎么做,只是这样做很容易混淆。我一直想弄清楚如何为 B部分(我理解A部分)编写这段代码。

A)使用循环生成10到20(含10)之间的1000个随机整数。找到您的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场比赛和平均2秒钟才能完成比赛。

3 个答案:

答案 0 :(得分:0)

您正在寻找答案。我不会为您解决问题,但是这是我追求的目标。

您的while循环需要检查并查看您是否越过终点线,所以

// proper spacing and indentations makes the code easier to read thus more maintainable.
// Also, Always specify the columns list in an insert statement.
var tsql = @"INSERT INTO CAMADA (id, team, shift, starttime, jobdate, pm) 
             VALUES (@id, @team, @shift, @starttime, @jobdate, @pm)";
// use the using statement to ensure the SqlConnection is closed and disposed when done.
// This is important not only because it's an IDispsable, but also because that 
// if you don't dispose it, the connection will not return to the connection pool
using(var cn = new SqlConnection("**CONNECTION STRING IS WORKING FINE, CHECKED**"))
{
    // SqlCommand is also an IDisposable
    using(var cmd = new SqlCommand(tsql,cn))
    {
        // CommandType.Text is the default, no need to set it explicitly

        // Use parameters to avoid all kinds of nasty stuff like SQL injection,
        // but also having to handle DateTime string literals formats 
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
        cmd.Parameters.Add("@team", SqlDbType.Int).Value = team;
        cmd.Parameters.Add("@shift", SqlDbType.Int).Value = shift;
        cmd.Parameters.Add("@starttime", SqlDbType.DateTime).Value = starttime;
        cmd.Parameters.Add("@jobdate", SqlDbType.DateTime).Value = jobdate;
        // Of course, the size is also a guess...
        cmd.Parameters.Add("@pm", SqlDbType.VarChar, 2).Value = pm;
        cn.Open();
        cmd.ExecuteNonQuery();    
    }
}

然后,每秒钟,您需要增加时间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变量中,您已经演示了如何做。

答案 1 :(得分:0)

虽然感觉很像为您做家庭作业,但您还是来了。 如果您再次遇到这样的问题,请尝试将注释一步一步地“翻译”为代码-差不多完成了。

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

答案 2 :(得分:0)

这可以通过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