有可能简化这个吗?也许两者相结合?教我干燥的方法: - \
o = old_last_result
if o == 7:
old_last_result_msg = result_7
elif o == 12:
old_last_result_msg = result_12
elif o == 23:
old_last_result_msg = result_23
elif o == 24:
old_last_result_msg = result_24
elif o == 103:
old_last_result_msg = result_103
elif o == 1000:
old_last_result_msg = result_1000
else:
old_last_result_msg = "Error code: #%s" % old_last_result
n = new_last_result
if n == 7:
new_last_result_msg = result_7
elif n == 12:
new_last_result_msg = result_12
elif n == 23:
new_last_result_msg = result_23
elif n == 24:
new_last_result_msg = result_24
elif n == 103:
new_last_result_msg = result_103
elif n == 1000:
new_last_result_msg = result_1000
else:
new_last_result_msg = "Error code: #%s" % new_last_result
答案 0 :(得分:9)
result_msgs = {
7: result_7,
12: result_12,
...
}
old_last_result_msg = result_msgs.get(old_last_result,
"Error code: #%s" % old_last_result)
new_last_result_msg = result_msgs.get(new_last_result,
"Error code: #%s" % new_last_result)
答案 1 :(得分:2)
您可以使用词典:
results = {7: result_7, ..., 1000: result_100}
old_last_result_msg = results.get(o, "Error code: #%s" % old_last_result)
答案 2 :(得分:1)
您似乎将数字代码映射到字符串消息。使用词典!观察:
_result_msg = {
7: result_7,
12: result_12,
# ... etc
}
o = old_last_result
try:
old_last_result_msg = _result_msg[o]
except KeyError:
old_last_result_msg = 'Error code: #%s' % o
答案 3 :(得分:0)
eval对你来说可能很有意思......
i = 7
result_7 = 'foo'
print eval('result_%s' % i)
> foo
答案 4 :(得分:0)
您可以使用内置的locals()或globals()来构造变量,如:
var res = "result_%d"%o
if res in locals(): old_last_result_msg = locals()[res]
else:
if res in globals(): old_last_result_msg = globals()[res]
else: raise Exception("unexpected result:%s"%res)