1、流程控制之if判断
1.1、什么是if判断?
条件是否符合的判断方法,
1.2、为什么要有if判断?
为了让计算机具备像人一样判断条件是否成立的功能
1.3、如何使用?
if语句中用缩进标示代码级别,自上而下逐条执行;冒号下一句必须缩进,如使用的是pycharm冒号后回车会自动缩进!
1.3.1、单分支
#input将用户输入的内容存成字符串类型并保存为变量,因此需要int转换为整数型
age = input('please input your age :')
if 18 < int(age) < 30:
print('嗨!靓女!')
else:
print('滚犊子!')
#pycharm执行后得到结果
please input your age :23
嗨!靓女!
1.3.2、多分支
age = input('please input your age :')
if 18 < int(age) < 40:
print('哟!小年轻啊!')
elif int(age) < 18:
print('小屁孩!')
elif 60 > int(age) > 40:
print('中年危机')
else:
print('滚犊子!')
#在pycharm执行得到结果:
please input your age :30
哟!小年轻啊!
please input your age :12
小屁孩!
please input your age :46
中年危机
2、while循环
2.1、什么是循环
循环,重复做的事!比如你每天都需要吃饭喝水,这就是一个周期循环的操作!
2.2、为什么要有循环
为达到某种目的而重复劳动,但是需要解放双手,提高效率!比如说算数,从1+2=3,3+2=5,5+2=7,几个还好,加到后面人就跟不上了!这不是人干的事,计算机就特别适合了,没有感情!
2.3、循环语法与基本使用
如条件结果为真,则依次执行;执行完再判断,如条件还为真,则继续以上操作,如此循环!
这样会造成一个问题,请看下面演示!无限循环了,会极大占用系统资源!
age = input('please input your age: ')
while int(age) > 18:
print('双击666')
#执行pycharm获得结果
双击666
双击666
双击666
双击666
双击666
双击666
双击666
2.4、死循环与效率问题
2.4.1、什么是死循环
即不会结束的循环,比如上面的演示中while循环永远为真,那就不会停止执行,浪费资源额,尤其是纯计算无I/O的循环;如
while true:
1+1
#这个死循环会跑满你的CPU
2.4.2、循环的应用
比如输密码,当用户输错密码时,提示用户重新输入,超过一定次数则禁止登陆!
2.5、退出循环的两种方式
2.5.1、直接改条件:
条件改为假后,等到循环下一次判断条件时生效;
2.5.2、while+break
执行到break就立即停止本层循环,简单粗暴!如下所示
age = input('please input your age: ')
while int(age) > 18:
print('双击666')
break
#pycharm执行得到结果,仅循环了一次,到了break就停止循环!
please input your age: 22
双击666
2.6、while循环嵌套与结束
2.6.1、break
2.6.2、while与continue
continue它也是结束循环,不过跟break不一样,他是结束本次循环(跳过本次循环),直接进入下一次;也就是说continue后面加的同级代码没有意义,永远没机会上场!如下所示:
age = input('please input your age: ')
while 18 < int(age) < 30:
gender = input('please input your gender(male or female): ')
if gender == 'male':
continue
print('你瞅啥?信不信我揍你?')
elif gender == 'female':
print('hello')
break
#执行pycharm获得结果
please input your age: 22
please input your gender(male or female): male
please input your gender(male or female): female
hello
Process finished with exit code 0
2.6.3、while与else
else是在while循环结束后,且while没有被break打断的情况下正常结束掉,才会执行
age = 0
while age < 100:
age += 1
break
else:
print('终年百岁')
Process finished with exit code 0
可以看到上面被break结束后,else没有被执行,去掉它再试试py
age = 0
while age < 100:
age += 1
else:
print('终年百岁')
#pycharm执行
终年百岁
Process finished with exit code 0
3、for循环
3.1、什么是for循环
for循环是循环取值
3.2、为什么要有for循环
for循环在循环取值(遍历取值)比while循环更简洁
3.3、for循环语法与使用
基础使用如下:
for i in {1,2,3}:
print('hello')
#pycharm执行得到结果
hello
hello
hello
可以看出,只要列表里存在多少个元素,for就循环多少次,for循环次数取决于元素数量!
3.4、for控制循环次数:
上面演示比较原始,当需要循环的次数较多时比如一万次,手动填写元素不现实,这时候需要一种便捷的方法来控制范围!
于是乎,range就登场了!但是呢,range在Python2.7和3.X版本用法是不太一样的,这里演示一下!
3.4.1、渣男Python2.7
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
如上所示,Python中默认是从0开始计算,因此循环到第十次,其实序号是9;当你指定开头是1,结束是10的时候,只有1-9,因为在Python的for循环中尾数是不被计入有效值的,可以说它是有始无终的渣男!
3.4.2、什么是步长!
当你写range(10)时,输出的值默认是0,1,2,3。。。这样子,即默认每个值间隔为+1;这称之为步长,我们可以手动设置步长大小,如下所示:
>>> range(1,16,2)
[1, 3, 5, 7, 9, 11, 13, 15]
#这个例子中,1是开头,16是结尾,2是设定的步长。
可以看到开头为1,步长为2,那么第二个值就是1+2=3,第三个值就是3+2=5,如此类推!
3.4.3、步长有什么用?
有助于for进一步控制循环次数!使用方法上面已经给出演示!
range还可以用len()取现有列表的值,了解即可,因为麻烦。
3.4.3、Python3.X
>>> range(10)
range(0, 10)
这可以看出跟2.7有明显的区别,2.7直接把所有值给输出出来了;而3.X只是输出值的范围,而不是所有值;其实它只是一个地址指向真实的内存空间,当需要哪个值时再取对应值,而不是跟2.7一样直接列出所有,这样就节省了很多内存资源,特别是范围大的时候越明显,其它还是跟2.7一样!Python确实是老司机:换成我们中国人的话就是:四两拨千斤!
3.5、for循环嵌套
这些跟while没什么区别
3.5.1、for+break+else
for i in range(3):
print('客官里边儿请!您需要来点什么?\n1、两斤酱牛肉。\n2、两坛上好的女儿红。')
menu = input('请选择您的菜单: ')
if int(menu) == 1 or int(menu) == 2:
print('好勒!客官您稍等!')
break
else:
print('你到底想干嘛?没钱赶紧滚蛋!')
#print时加入\n就是换行的意思,这在很多语言中都是如此!
当在pycharm执行时,如果是1或者2,则for循环被break打断,后面的else也不会有机会执行:
客官里边儿请!您需要来点什么?
1、两斤酱牛肉。
2、两坛上好的女儿红。
请选择您的菜单: 1
好勒!客官您稍等!
Process finished with exit code 0
如果循环的三次都没有输对菜单号,即for循环没被break打断,此时会执行else语句
客官里边儿请!您需要来点什么?
1、两斤酱牛肉。
2、两坛上好的女儿红。
请选择您的菜单: 6
客官里边儿请!您需要来点什么?
1、两斤酱牛肉。
2、两坛上好的女儿红。
请选择您的菜单: 6
客官里边儿请!您需要来点什么?
1、两斤酱牛肉。
2、两坛上好的女儿红。
请选择您的菜单: 6
你到底想干嘛?没钱赶紧滚蛋!
Process finished with exit code 0
3.5.2、for+continue
i = 0
i +=1
for i in range(8):
if i == 5:
continue
print(i)
执行得到结果
0
1
2
3
4
6
7
在这个for循环中,当i等于5的时候,就执行continue跳过此轮循环,因此最终结果没有5!