大执法官 发表于 2020-9-2 11:15:00

求解

在学习“这帮小兔崽子”的这节课中,用斐波那契数列做例子求兔子数量。然后自己手动的代码是:
def fbnqi(n):
   if n == 1 or 2:
       return 1
   else:
       return fbnqi(n-1) + fbnqi(n-2)


monthnumber = int(input("请输入求兔子数量的月份:"))
result = fbnqi(monthnumber)
print("%d 月份后的兔子对数是:%d" % (monthnumber, result))

然后一直返回1,只是小甲鱼老师的条件改成了”if n == 1 or n == 2:”,改动了这一个地方就可以运作了。想问一下这个or不能这样表达吗

大执法官 发表于 2020-9-4 12:23:11

尴尬,,忘看发帖要求了,,早知道主题长一点了,,,还好被审核通过了。。求问求问{:5_109:}

疾风怪盗 发表于 2020-9-4 12:59:16

if n == 1 or 2
这句话的意思是if n ==1 或者 if 2
然后if 2 这个一直是真的,假或真,就一直判断为真,这个判断等于没意义

和if n == 1 or n == 2:是完全不一样的

鱼cpython学习者 发表于 2020-9-4 13:01:28

你这样编辑Python看到的代码是这样的:
if n == 1 or 2 is True
那这个判断就没有意义了,因为2永远是True

lijiachen 发表于 2020-9-5 16:29:12

原因的根本是:
“==”运算符的优先级高于“or”运算符,所以:
if n == 1\# 不知道是不是True
2# 任何整数(>0)都是True
所以or运算符中有一个True结果肯定是True

大执法官 发表于 2020-9-5 22:50:48

疾风怪盗 发表于 2020-9-4 12:59
这句话的意思是if n ==1 或者 if 2
然后if 2 这个一直是真的,假或真,就一直判断为真,这个判断等于没 ...

谢谢
页: [1]
查看完整版本: 求解