python - 如何在代码中转换速度?

标签 python python-3.x converters

我的任务是创建一个程序来检测外国超速的车牌。为此,必须创建一段道路、耗时等。代码的问题不在于速度有多不切实际,而是事实上我最近从老师那里发现速度应该以英里每小时为单位,而不是米每秒。

import re

# DATA
distance = 0.06 # Distance between the Camera A and B; 0.06 = 600 metres
speed_limit = 20 # (meters per second)

number_plates = ["DV61 GGB",      #UK
                 "D31 EG 2A",     #F
                 "5314 10A02",    #F
                 "24TEG 5063",    #F
                 "TR09 TRE",      #UK
                 "524 WAL 75",    #F
                 "TR44 VCZ",      #UK
                 "FR52 SWD",      #UK
                 "100 GBS 12",    #F
                 "HG55 BPO"       #UK
                 ]

enter = [7.12,7.17,7.22,7.12,7.23,7.41,7.18,7.25,7.11,7.38]
leave = [7.56,7.39,7.49,7.56,7.45,7.57,7.22,7.31,7.59,7.47]

# Find the non-UK plates
pattern = "(?![A-Z]{2}\d{2}\s+[A-Z]{3}$)"
foreign_numbers = list(filter(lambda x: re.match(pattern, x), number_plates))

# Calculations for speed
elapsed = [(l - e)/100 for l, e in zip(leave, enter)]
speed = [distance/t for t in converted_elapsed]

# Dictionary for foreign speeders + 2 conditions
foreign_speeders = {plate: speed 
                    for plate, speed in zip(number_plates, speed)
                    if (plate in foreign_numbers) and (speed > speed_limit)}

print("10 cars have passed Camera A, then Camera B\nSpeed limit is 20 meters per second.\n")

# Write foreign speeders to file
for plate, speed in foreign_speeders.items():

    speeders_data = open("speeders.txt","w") # Opens file with name of "speeders.txt"
    speeders_data.write(
        "{0:>13s} is foreign and is speeding at{1:5.1f} mps, and has an excess speed of {2:3.1f} mps.".format(plate, speed, speed-speed_limit))
    speeders_data = open("speeders.txt","r")
    print(speeders_data.read())
    speeders_data.close()

我想知道,重写所有速度变量是否更简单,例如speed_limitelapsed项以及speed公式> 以它们转换的形式,或者在代码中间转换速度?

哪种解决方案更合适,我该怎么做?

最佳答案

首先,您肯定需要一个可以转换单位的函数,例如mps_to_mph 按照@mirosval 的建议。

但是,我建议您应该在某个时候更清楚地说明单位是什么。 最简单的解决方案是将其放在变量名中:speed_mps = 78.7speed_mph = mps_to_mph(speed_mps),否则当你再次阅读代码时将无法理解你的代码(好吧,你可能永远不会再读这段代码,但至少你的老师会......并且你写的每一个代码都应该很容易理解,不需要额外的解释)。

在更复杂的应用程序中,有许多这样的计算,您可能希望有一个可以记住单位并知道如何转换值的类,以便您可以执行以下操作:

speed = Speed(78.8, 'm/s')
if speed > Speed(60, 'mph'):
    # something

关于python - 如何在代码中转换速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34202554/

相关文章:

python - boofuzz/process_monitor.py - pdx : [50] DebugActiveProcess(X): The request is not supported

python - 如何从包含字典的字符串中获取字典键值?

Python高斯核密度计算新值的分数

python - python3 flask 应用程序中的 pymongo 导入错误

python - 解释器可以通过哪些方式留下类定义?

python-3.x - 为什么我在 pytest 中遇到 pytest AssertionError ?

c# - 无法从列表中获取值以便设置网格 header 值 c#

python 破折号 : Get the edited cell value from filterable table

java - 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

java - 从 Object[][] 转换为 ImageIcon