def fbi(n):
if n==1 or n==2:
return 1
else:
return fbi(n)=fbi(n-1)+fbi(n-2)
n = eval(input())
print(fbi(n))
错误提示:Exited with error status 1
File "6def0e3cfcaa312e52bcad3036d66b30", line 7
return fbi(n)=fbi(n-1)+fbi(n-2)
^
SyntaxError: invalid syntax
修正方法: return fbi(n-1)+fbi(n-2)
students = ['小明','小红','小刚'] students.append('小美') print(students)
需要强调的是,字典中的键具备唯一性,而值可重复。也就是说字典里不能同时包含两个'小明'
的键,但却可以有两个同为90
的值。
一个很重要的不同点是列表中的元素是有自己明确的“位置”的,所以即使看似相同的元素,只要在列表所处的位置不同,它们就是两个不同的列表。
字典相比起来就显得随和很多,调动顺序也不影响。因为列表中的数据是有序排列的,而字典中的数据是随机排列的。
students1 = ['小明','小红','小刚']
students2 = ['小刚','小明','小红']
print(students1 == students2)
False
scores1 = {'小明':95,'小红':90,'小刚':100}
scores2 = {'小刚':100,'小明':95,'小红':90}
print(scores1 == scores2)
True
这也是为什么两者数据读取方法会不同的原因:列表有序,要用偏移量定位;字典无序,便通过唯一的键来取值。
而整数、浮点数是不属于“一群排队办业务的人”的,如果把它们放在for循环里,代码会报错。
for循环和whlie循环最大的区别在于【循环的工作量是否确定】,for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡。
所以说,当我们【工作量确定】的时候,我们就可以让for循环来完成重复性工作。反之,要【工作量不确定时】可以让while循环来工作:
# 适合用for...in...循环 for i in '神雕侠侣': print(i) # 适合用while循环 password = '' while password != '816': password = input('请尝试输入密码:')
不过有一种情况for循环和while循环都可以解决问题,那就是【把一件事情做N遍】:
#用for循环把诗句打印3遍
for i in range(1,4) :
print('明日复明日,明日何其多。')
#用while循环把诗句打印3遍
j = 1
while j<4 :
print ('明日何其多,明日何其多。')
j =j+1
while False:
print('while False')
这是因为while循环执行,必须要while后的条件为“真”,而【布尔值】False本身就是“假”,所以这个循环一次都没运行就结束了。
if '开心': print('熊猫') if '': print('熊猫')
终端显示一个熊猫字符串,'开心'这个字符串作为一个条件时,被判定为真,所以if后面的条件满足,计算机会执行if的下一行代码;而 ''(空字符串)本身作为一个条件时,被判定为假,if后面的条件为假,计算机不会执行if的下一行代码。
使用bool()
函数来查看一个数据会被判断为真还是假
print(bool(3==3.0))
i = 100 while i: print('把这句话打印100遍') i = i-1
while True: print('上供一对童男童女') t = input('孙悟空来了吗') if t == '来了': break print('孙悟空制服了鲤鱼精,陈家庄再也不用上供童男童女了')
while True
我们在上面见过了,这个条件恒为真,就会开启无限循环。而while True
常和break语句搭配使用,你也可以学着使用这种写法。
secret = 24 #设定秘密数字
while True:
guess = input('你来猜猜我的秘密数字是多少:') #输入猜测数字
if int(guess)==secret: #数字对比
print('正确!你很棒哦。')
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')