第二种方法,你对python运算符优先级的理解不对。先看图,下图为python运算符的优先级,从上到下,所以你的if 语句i == 1 or 2,实际上有两个运算:== 和 or,你的本意是,判断i等于1或者i等于2时,为ture,实际根据优先级,先计算i == 1,结果为Ture(1)或者False(0),再和2进行or运算,结果只会是Ture(1)或者False(0)两种。因此,不管你实参是什么数字,先判断实参是否等于1,其结果(为1或者0)再和2做or运算,其结果也只有Ture(1)和False(0),最终运算结果就只会计算c(1)或者c(0),当然只能return 1了
c(0)的计算我解释可能也不准确
建议改为:
if i == 0 or i == 1: