一.if判断
if判断的作用:
计算机对事物的好坏,可行性真假对错等进行一个判断,从而做出不同的处理。
if判断的基本格式:
if 条件:
代码块1
代码块2
代码块3
....
if语句执行基本情况:
先对条件进行判断,如果条件符合则会执行if下属代码块,如果不符则不会执行。如下例:先进性条件判断,当条件符合时,会进行代码块1,2,3的执行。若条件不符合则会进行代码块4。
eg:
if 条件: 代码块1 代码块2 代码块3 代码块4
ps:1.在python中用缩进表示代码的归属,同一缩进的代码称为代码块
2.同一级别的代码从上到下依次运行
if判断的扩展:
1.if....else
if 条件: 代码块1 代码块2 代码块3 else: 代码块4 代码块5 代码块6
ps:1.当if和else合用时只能执行其中一个
2.else不能单独使用,else只能和if,while,for配合使用
2.if.....elif.....elif....(可以存在任意个elif)
if 条件: 代码块1 代码块2 代码块3 elif 条件: 代码块1 代码块2 代码块3
其中if和elif为同一缩进代码,从上到下依次进行判断执行,且也只会执行其中的一个
3.if....elif.....else
gender = 'female' age = 34 is_beautiful = True if gender == 'female' and age > 18 and age < 30 and is_beautiful: print('能不能加个微信啊,我很钟意你') elif gender == 'female' and is_beautiful: print('考虑一下') else: print('什么玩意儿')
此案例中if....elif.....else是同一级别的所以从上到下依次进行判断且只会执行其中的一个
4.if的嵌套
补充:1.在进行判断的时候,0’,‘[]’,'{}',‘’,None对应的bool值是False
2.变量名也是可以进行判断的,因为变量名指向的值对应的就是True或者False
3.布尔值可以用来直接判断
二。while循环
while的基本语法:
while 条件: 代码块1 代码块2 ......
while语句执行顺序:先对while的条件进行判断,当条件满足后会依次执行while的下属代码块,当while的下属代码块执行完后会再次进行while的条件判断,如此往复执行,直至条件不满足程序终止。
while的拓展运用:
1.while....break
while 条件: 代码块1 代码块2 ...... break
break:break在和while连用的时候作用为完全终止循环(针对break所属的while)
2.while....continue
while 条件: 代码块1 代码块2 ...... continue
continue:while和continue连用,continue的作用是结束本层循环,继续执行后面的循环。
3.while.....else
n = 1 while n < 5: if n == 3: break print(n) n += 1 else: print('while循环正常结束了')
ps:当while和else连用时,当while正常执行完,中间没有被break中止的话就会执行后面的else
补充:
1.定义一个全局的标志位,通过更改标志位来结束程序
tag = True while tag: 代码块1 代码块2 ... while tag: 代码块1 代码块2 while tag: 代码块1 ...
通过定义一个标志位tag=True,在后期通过改变得到tag=false来结束程序
2.不要在程序中写入死循环
while True: 1+2+2
因为while的条件一直为真,程序会一直执行下去并不会报错
三。for循环
for循环的基本语法结构:
for 变量名 in 容器类型: for循环体内的代码1, for循环体内的代码2, ...
for循环用于取值:
1.从列表中取值
l = [1, 2, 3, 4, 5] for a in l: print(a)
其中是把l中的元素一个个赋值给a,然后在把a输出。
2.从字典中取值
d = {'name':'zhang','password':'123','hobby':[1,2,3,4]} for i in d: print(d)
print(d[i])
ps:字典暴露给我们能操作的只有key,所以上述输出的是key,如需知道value是多少须将最后的输出改为print(d[i])
for循环取值不依赖索引,而while循环取值依赖索引。
3.范围中取值(range)
for a in range(1,10): print(a)
ps:1.在从range中取值时,范围是顾头不顾尾的即1可以取到但是10取不到。
2. 在python2和python3中range()是不同的。在python2中range以列表的形式体现全部的值,占内存较大,python3中是一个迭代器,占用空间小,利用率高(你需要的时候才给你)。在python2中有xrange 功能和python3中的range相同,但是存在一个范围。
python2和3的不同有:range(xrange),input(raw_input)
4.for....break for....continue for...else功能和while循环中是一样的。
5.for循环的嵌套
eg:乘法口诀表
for i in range(1,10): for j in range(1,i+1): # 内存循环的range条件是根据外层循环决定的 print('%s*%s=%s'%(i,j,i*j),end=' ') print()
今日作业:
1.限制用户登录错误尝试次数
use_info = { 'name':'zhang','pwd':'123' } a = 1 while a < 4: name = input('please input your name>>>:') pwd = input('please input your pwd>>>:') if name == use_info['name'] and pwd == use_info['pwd']: print('谢谢翻牌') break a+=1
2.用户尝试三次还不对后直接结束程序用户尝试三次输入不对后提示用户是否继续尝试,如果输入y则再给三次机会,如果输入n则直接结束程序
use_info = { 'name':'zhang','pwd':'123' } a = 1 while a < 4: name = input('please input your name>>>:') pwd = input('please input your pwd>>>:') if name == use_info['name'] and pwd == use_info['pwd']: print('谢谢翻牌') break else: a += 1 if a == 4: print('如果你想继续登陆请输入"y",离开可输入"n"') select = input('please input "y" or "n">>>:') if select == 'y': a = 1 else: break
use_info = { 'name':'zhang','pwd':'123' } a = 1 while a < 4: name = input('please input your name>>>:') pwd = input('please input your pwd>>>:') if name == use_info['name'] and pwd == use_info['pwd']: print('谢谢翻牌') while True: cmd = input('please input cmd>>>:') if not cmd:continue if cmd == 'q':break else:print('run <%s>' %cmd) break else: a += 1 if a == 4: print('如果你想继续登陆请输入"y",离开可输入"n"') select = input('please input "y" or "n">>>:') if select == 'y': a = 1