我试图用Python编写一个简单的计算器,使用字典。这是我的代码:
def default():
print "Incorrect input!"
def add(a, b):
print a+b
def sub(a, b):
print a-b
def mult(a, b):
print a*b
def div(a, b):
print a/b
line = raw_input("Input: ")
parts = line.split(" ")
part1 = float(parts[0])
op = parts[1];
part3 = float(parts[2])
dict = {
'+': add(part1, part3),
'-': sub(part1, part3),
'*': mult(part1, part3),
'/': div(part1, part3)
}
try:
dict[op]
except KeyError:
default()
但是所有的功能都被激活了。怎么了?
这是因为当字典被填充时,它用操作数执行每个操作, 最后,调用包含
None
的dict[op]
,而不做任何处理。结果是:
这就是为什么您得到所有输出,而在您的
try
块中什么也没有发生。你可能真的想:
但是正如@christian明智地建议的那样,不应该使用python保留名作为变量名,这可能会导致麻烦。我建议您做的另一个改进是只打印一次结果,并使函数lambdas:
它将返回结果并打印出来
定义类似字典的形式对
str : function
:如果要调用操作,请使用
my_dict[op]
获取函数,然后使用相应的参数传递调用:注意:不要使用Python内置名称作为变量名,否则将隐藏其实现。例如,使用
my_dict
而不是dict
。相关问题 更多 >
编程相关推荐