基本上,我正在尝试制作一个计算两个相距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")
答案 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
这会为您的全局变量添加seed
,randrange
和uniform
。
简单地删除random.
前缀并直接使用uniform
全局:
camInput2 = camInput1 + timedelta(seconds = uniform(5, 10))
请注意,您可以在此处简化代码;没有必要添加到camInput1
然后再次减去它。只需使用:
timeDelta = timedelta(seconds = uniform(5, 10))
datetime_value + timedelta_value - datetime_value
再次产生timedelta_value
。