一般如果函数超过200行,就应该考虑拆成多个更小的函数了 这样有利于代码复用,另外拆分出来的函数名称也相当于一种代码注释,说明了代码的功能,提高可读性 https://codereview.appspot.com/351750043/diff/1/a1.py File a1.py (right): https://codereview.appspot.com/351750043/diff/1/a1.py#newcode7 a1.py:7: button = 1 不必要的变量应该删掉,保持代码简洁 https://codereview.appspot.com/351750043/diff/1/a1.py#newcode9 a1.py:9: sta = [] # use to calculate the input between parentthese or sta -> stack 用完整的单词,代码首先是给人看的,要注意可读性(readability)、可维护性(maintainable) https://codereview.appspot.com/351750043/diff/1/a1.py#newcode11 a1.py:11: c = 0 # count for "(" 最好不要用single letter variable,可读性不好,要用有意义的单词 https://codereview.appspot.com/351750043/diff/1/a1.py#newcode18 a1.py:18: # 4: * flag没必要是整数,可以就存放一个字符,反而更容易理解,不是吗? https://codereview.appspot.com/351750043/diff/1/a1.py#newcode20 a1.py:20: a = input("writer down the input: ") 这里也是,不要用`a`作为变量名 一般只有少数情况可以用单个字母的变量,比如`n`一般用来表示数量 https://codereview.appspot.com/351750043/diff/1/a1.py#newcode26 a1.py:26: while i < length: 为什么不用一个for循环呢 for i in range(length): https://codereview.appspot.com/351750043/diff/1/a1.py#newcode48 a1.py:48: summ = sta.pop() * summ 上面这一串if ope == 2|3|4,很不好 这种叫做magic number,意思就是别人读的你代码,完全不知道这些数字表示什么,就是一个神秘的值放在那里 一般建议的做法是,事先定义一些常量,比如: OP_PLUS = 1 OP_MINUS = 2 OP_MULT = 3 OP_DIV = 4 然后再写if语句,就很好懂了: if ope == OP_PLUS: ... https://codereview.appspot.com/351750043/diff/1/a1.py#newcode54 a1.py:54: print("wrong ), please check and re-input") 代码里面夹杂着这些错误处理的逻辑,会显得代码比较乱,更高级也更好的做法是用exception https://codereview.appspot.com/351750043/diff/1/a1.py#newcode71 a1.py:71: elif 48 <= ord(a[i]) <= 57 or a[i] == ".": magic number又出现了 https://codereview.appspot.com/351750043/diff/1/a1.py#newcode98 a1.py:98: elif a[i] == "/":# divid elif a[i] == "/":# divid -> elif a[i] == "/": # divid 注释和代码之间最好加2个空格,这是一般默认的约定 https://codereview.appspot.com/351750043/diff/1/a1.py#newcode103 a1.py:103: elif a[i] == "*":#multiply elif a[i] == "*":#multiply -> elif a[i] == "*": # multiply https://codereview.appspot.com/351750043/diff/1/a1.py#newcode122 a1.py:122: print(res) 函数结束,加一个空行