将随机数添加到datetime.now()的值

时间:2015-02-05 17:38:39

标签: python datetime random python-datetime

基本上,我正在尝试制作一个计算两个相距200米的点之间的平均速度的程序,当然可以将其转换为mph,这样我可以说它是高于还是低于速度限制。我在制作它时遇到问题,因此它会将随机数添加到datetime.now()的值,因为它告诉我“NameError:name'random'未定义”。 可能有一个非常简单的解决方案,我只是不确定如何在这个实例中使用随机。 我不太确定如何解决这个问题,谢谢你的帮助。 到目前为止,这是我的代码:

from datetime import date, datetime, time, timedelta
from random import seed, randrange, uniform
import time
def timeDelta():
    print("Average Speed Checker")
    start = (input("Car has passed Cam1: "))
    if start in ("y"):
        camInput1 = datetime.now()
        print(camInput1)
        print("Car is travelling...")
        time.sleep(1)
        print("Car is travelling...")
        time.sleep(1)
        print("Car has passed cam2")
        camInput2 = camInput1 + timedelta(seconds = random.uniform(5, 10))
        timeDelta = camInput2 - camInput1
        distance = 200
        duration = timeDelta.total_seconds()
        print("Time Delta is equal to: {0}".format(duration))
        speedCarMs = distance/duration
        print("Car is travelling in m/s at: {0}".format(speedCarMs))
        speedCarMph = 2.237*speedCarMs
        print("Car is traveelling in MPH at: {0}".format(speedCarMph))


print("Choose which function you want to use: ")
while True:
    choice = (input("Choice: "))
    if choice in ("speed"):
        timeDelta()
    else:
        print("Invalid response")

2 个答案:

答案 0 :(得分:2)

因为您这样导入:

from random import seed, randrange, uniform

您不需要引用命名空间。而不是:

timedelta(seconds = random.uniform(5, 10))

尝试:

timedelta(seconds=uniform(5, 10))

这是因为当您导入from ... import ...时,它会将它们添加到当前范围。就像a = 29将变量a添加到值为29的范围的方式一样,from random import uniform会将uniform作为函数添加到范围。

答案 1 :(得分:2)

您导入了名称uniform(以及其他名称),名称random

from random import seed, randrange, uniform

这会为您的全局变量添加seedrandrangeuniform

简单地删除random.前缀并直接使用uniform全局:

camInput2 = camInput1 + timedelta(seconds = uniform(5, 10))

请注意,您可以在此处简化代码;没有必要添加到camInput1然后再次减去它。只需使用:

timeDelta = timedelta(seconds = uniform(5, 10))

datetime_value + timedelta_value - datetime_value再次产生timedelta_value