这可能是一个非常基本的问题,但我是Python的新手。我正在建立一个简单的距离转换工具,我想让用户根据他们的测量结果选择输入浮点数或整数。除了10亿if语句(每个测量单位一个,如英寸到厘米或英尺到米),还有一个不错的方法吗?
编辑:这是我的代码片段
#if imperial, offer choices of inch, foot, or mile
if disType == "i":
print """
What unit of measurement do you want to convert?
inches to centimeters: i
feet to meters: f
miles to kilometers: m
"""
unitType = raw_input(prompt)
#if unit is inches, prompt user for number of
#inches and convert to centimeters
if unitType == "i":
print "Please input distance in inches"
inches = int(raw_input(prompt))
centimeters = inches * 2.54
print "That is %i centimeters" % centimeters
如果用户输入小数,我希望能够对其进行说明。但我对每次转换都有其中一个if语句(仅在距离上有六次转换)。我宁愿不为每一个在浮动情况下分支的if语句添加一个if语句。
答案 0 :(得分:2)
如果没有一堆if语句,你似乎在如何实现单位转换方面遇到了麻烦,对吗?
如果我是你,我会这样做:
conv_func = {
'inch': func_for_inch_conv,
'cm': func_for_cm_conv,
...
}
data = raw_input() # prompt the user to enter data in the form '1 inch'
mag, unit = data.split(' ')
result = conv_func[unit](mag)
我不知道这是否是解决问题的好办法,但这就是我的想法。