【问题标题】:How to multiply input given by user for metric system calculator [closed]如何乘以用户为公制计算器提供的输入[关闭]
【发布时间】:2017-04-11 16:55:39
【问题描述】:
我正在使用 cs50 中的 python3 为类使用公制系统转换器,但我遇到了一些麻烦。基本上,我希望用户输入一个数字(值),然后他会选择测量的前缀(例如:公斤、毫、微等),当这个人这样做时,它会将值乘以或除以一个数字将其转换为请求的测量单位。例如,如果他们想将厘米转换为公里,我希望用户输入例如 200 厘米,然后将其除以 1000 得到 0.002 公里并将其打印给用户。但我不知道该怎么做。任何帮助将不胜感激。
【问题讨论】:
标签:
python-3.x
system
physics
cs50
metric
【解决方案1】:
我并不想做你的功课,但这应该会给你一个初步的想法:
factor = {'km': 3,
'm': 0,
'dm': -1,
'cm': -2,
'mm': -3} # dictionary with powers, e.g. 1 km = 10**3 m
# For your example of 200 cm = 0.002 km, you type...
number = float(input('numerical value: ')) # 200
unit = input('unit: ') # cm
target_unit = input('target unit: ') # km
print(number * 10**factor[unit] / 10**factor[target_unit], target_unit)
【解决方案2】:
QuantiPhy 包将为您完成这项工作。
>>> from quantiphy import Quantity
>>> for v in '1MHz 10ug 1ps'.split():
... q = Quantity(v)
... print(v, q, 1/q, sep=', ')
1MHz, 1 MHz, 1e-06
10ug, 10 ug, 99999.99999999999
1ps, 1 ps, 1000000000000.0
对于本例中的每种情况,原始字符串与数量值及其倒数一起打印。这样做是为了表明数量是使用 SI 比例因子和单位自然呈现的,并且您可以在任何可以使用浮点数的地方使用它们。