-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathunits.py
More file actions
116 lines (102 loc) · 2.88 KB
/
Copy pathunits.py
File metadata and controls
116 lines (102 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
"""
单位定义模块
定义所有支持的换算类型和单位
"""
# 换算类型及单位定义
# 格式: {类别: {单位: 换算基准值}}
# 换算时先转换为基准值,再从基准值转换为目标单位
UNIT_DATA = {
# 长度单位 (以米为基准)
"长度": {
"米 (m)": 1.0,
"千米 (km)": 1000.0,
"厘米 (cm)": 0.01,
"毫米 (mm)": 0.001,
"分米 (dm)": 0.1,
"英里 (mi)": 1609.344,
"码 (yd)": 0.9144,
"英尺 (ft)": 0.3048,
"英寸 (in)": 0.0254,
"海里 (nmi)": 1852.0,
},
# 重量单位 (以千克为基准)
"重量": {
"千克 (kg)": 1.0,
"克 (g)": 0.001,
"毫克 (mg)": 0.000001,
"吨 (t)": 1000.0,
"磅 (lb)": 0.453592,
"盎司 (oz)": 0.0283495,
"斤": 0.5,
"两": 0.05,
},
# 温度单位 (需要特殊处理)
"温度": {
"摄氏度 (°C)",
"华氏度 (°F)",
"开尔文 (K)",
},
# 体积单位 (以升为基准)
"体积": {
"升 (L)": 1.0,
"毫升 (mL)": 0.001,
"立方米 (m³)": 1000.0,
"立方厘米 (cm³)": 0.001,
"加仑 (gal)": 3.78541,
"夸脱 (qt)": 0.946353,
"品脱 (pt)": 0.473176,
"杯": 0.236588,
"液盎司 (fl oz)": 0.0295735,
},
# 面积单位 (以平方米为基准)
"面积": {
"平方米 (m²)": 1.0,
"平方千米 (km²)": 1000000.0,
"平方厘米 (cm²)": 0.0001,
"公顷 (ha)": 10000.0,
"亩": 666.667,
"英亩 (acre)": 4046.86,
"平方英尺 (ft²)": 0.092903,
"平方英寸 (in²)": 0.00064516,
"平方码 (yd²)": 0.836127,
},
# 速度单位 (以米/秒为基准)
"速度": {
"米/秒 (m/s)": 1.0,
"千米/时 (km/h)": 0.277778,
"英里/时 (mph)": 0.44704,
"英尺/秒 (ft/s)": 0.3048,
"节 (kn)": 0.514444,
"马赫 (Mach)": 343.0,
},
# 时间单位 (以秒为基准)
"时间": {
"秒 (s)": 1.0,
"毫秒 (ms)": 0.001,
"微秒 (μs)": 0.000001,
"分钟 (min)": 60.0,
"小时 (h)": 3600.0,
"天 (d)": 86400.0,
"周 (week)": 604800.0,
"月 (30天)": 2592000.0,
"年 (365天)": 31536000.0,
},
}
def get_categories():
"""获取所有换算类型"""
return list(UNIT_DATA.keys())
def get_units(category):
"""获取指定类型的全部单位"""
units = UNIT_DATA.get(category, set())
if isinstance(units, set):
return list(units)
return list(units.keys())
def get_all_units():
"""获取所有单位及其类型"""
result = {}
for category, units in UNIT_DATA.items():
if isinstance(units, dict):
result[category] = list(units.keys())
else:
result[category] = list(units)
return result