如何将用户给出的输入乘以公制系统计算器

时间:2017-04-11 16:55:40

标签: python-3.x system physics cs50 metric

我正在使用cs50中使用python3的类的公制系统转换器,但我遇到了一些麻烦。基本上,我希望用户输入一个数字(值),然后他选择测量前缀(例如:千,毫,微等),当人这样做时,它将值乘以或除以a将其转换为要求的测量单位的数字。例如,如果他们想要将厘米转换为千米,我希望用户输入例如200厘米,然后用于将其除以1000以获得0.002km并将其打印给用户的功能。但我不知道该如何解决这个问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我没有尝试做你的作业,但这应该给你第一个想法:

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)

答案 1 :(得分:0)

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比例因子和单位自然呈现,并且可以在可以使用浮点数的任何地方使用它们。