条件语句
当我们写的程序需要分支时,也可以说当一个事件发生时在特定情况下会产生不同处理情况时就会用到我们的条件语句。
if...else语句:
单分支:
''' if 条件 : 满足条件后执行的代码 ''' age = 18 if age == 18 : print("我成年了!")
双分支:
''' if 条件 : 满足条件后执行的代码 else 不满足if时执行 ''' age = 19 if age <= 18 : print("我未年!") else : print("我成年了!")
多分支:
''' if 条件 : 满足条件后执行的代码 elif 条件 : 不满足上面条件执行 elif 条件 : 不满足上面条件执行 ... else 不满足上面条件执行 ''' age = 19 if age <= 18 : print("我还未年!") elif age >= 18 : print("我已经成年了!") else : print("我今年刚成年!")
缩进:
在其它的语言里,大多通过{}来确定代码块,而python里没有{}这就是python中的一大特色。那python怎么确定执行的代码块呢?这就引出了一个概念强制缩进,
目的是为了让程序知道,每段代码依赖哪个条件,如果不通过缩进来区分,程序无法确定执行的代码块。
Python的缩进原则:
顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进
同一级别的代码,缩进必须一致
官方建议缩进用4个空格,当然你也可以按你习惯的方式缩进。
循环语句
while语句:
''' while 条件 : 满足条件后执行的代码 ''' count = 0 while count <= 100 : #只要count<=100就不断执行下面的代码 print("loop ", count ) count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
while...else语句:
与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句。while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句。
>>> cont = 0 >>> while cont < 10: ... print(cont) ... cont += 1 ... if cont == 7: ... break # 循环中有break else :后的代码不执行.... ... else: ... print('end...') ... 0 1 2 3 4 5 6 >>> cont = 0 >>> while cont < 10: # 循环中没有break ... print(cont) ... cont += 1 ... else: # 循环完毕 最后执行 else 下的代码 ... print('end...') ... 0 1 2 3 4 5 6 7 8 9 end... ###############################
死循环:
有一种循环叫死循环,一但进入死循环,程序就会运行到天荒地老永远无法退出。
while 是只要后边条件永远成立(也就是条件结果永远为真)就一直执行。
例如:上面的代码,如果没有代码 count += 1 ,程序将进入死循环。因为count = 0 ,count <= 100 永远成立。
循环终止语句:
如果在循环的过程中,因为某些原因,你不想继续循环了,就要用到break 或 continue 终止语句。
break:完全跳出循环,执行循环后的代码。
continue:跳出本次循环,不执行continue后的代码,重新进入循环进行循环的条件判断。
>>> while cont < 10: ... cont += 1 ... if cont == 7 : ... continue # 跳过此时循环进行下一次 结果中没有7 ... print(cont) ... 1 2 3 4 5 6 8 9 10 >>> cont = 0 >>> while cont < 10 : ... cont += 1 ... if cont == 7 : ... break # 遇到 break 终止循环..... 7后面的都不会出来 ... print(cont) ... 1 2 3 4 5 6 >>>
for循环:
不依赖索引的取值
for i in range (4) : # i 为变量 (4)取值范围 print(">>:",i) # 0 1 2 3 for i in range (1,5) : # 顾头不顾尾 print(">>:",i) # 1 2 3 4 for i in range (1,5,2) : # 步长2 每两个取一个值 print(">>:",i) # 1 3
.for..else语句:
同 while ..... else 一样
>>> for k in range(10): ... print(k) ... else: ... print('end....') ... 0 1 2 3 4 5 6 7 8 9 end.... >>>
range:顾头不顾尾,默认从0开始
for_else的使用规则和while_else相同。
九九乘法表练习:
>>> for i in range(1,10):
... for j in range(1,i+1):
... print('{0}*{1}={2}'.format(j,i,i*j),end=" ")
... print()
...
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
PS:
print()自带一个换行符。
如果想取消默认换行符加end(""),详情可以参考九九乘法表的代码。
练一练
#!/usr/bin/env python3 # _*_ coding:utf-8 _*_ # @Time : 2017/08/29 # @Author : tony # @File : practice # @Version : 1.0 #1.编写for循环,利用索引遍历出每一个字符(选做题)msg='hello egon 666' msg='hello egon 666' for k in msg: print(k) #2.编写while循环,利用索引遍历出每一个字符msg='hello egon 666' cont = 0 while cont < (len(msg)): print(msg[cont]) cont += 1 #3.msg='hello alex'中的alex替换成SB msg = 'hello alex' print(msg.replace('hello','SB')) #4.msg='/etc/a.txt|365|get'将该字符的文件名,文件大小,操作方法切割出来 msg = '/etc/a.txt|365|get' print(msg.split('|')) #5.编写while循环,要求用户输入命令,如果命令为空,则继续输入 while True: ret_inp = input('>>>').strip() if not ret_inp:continue print(ret_inp) break #6.编写while循环,让用户输入用户名和密码,如果用户为空或者数字,则重新输入 while True: user = input('>>>').strip() if not user or user.isdigit():continue print(user) break #7.编写while循环,让用户输入内容,判断输入的内容以alex开头的,则将该字符串加上_SB结尾 while True: user_input = input('you must input alex is stop >>>').strip() if user_input.startswith('alex'): user_input += '_SB' print(user_input) break print(user_input) """ 8. 1.两层while循环,外层的while循环,让用户输入用户名、密码、工作了几个月、每月的工资(整数),用户名或密码为空,或者工作的月数不为整数,或者 月工资不为整数,则重新输入 2.认证成功,进入下一层while循环,打印命令提示,有查询总工资,查询用户身份(如果用户名为alex则打印super user,如果用户名为yuanhao或者wupeiqi 则打印normal user,其余情况均打印unkown user),退出功能 3.要求用户输入退出,则退出所有循环(使用tag的方式) 运行效果如下: user: egon password: 123 work_mons: 12 salary: 10000 查询总工资 查询用户身份 退出登录 >>: 1 总工资是: 120000.0 查询总工资 查询用户身份 退出登录 >>: 2 unkown user 查询总工资 查询用户身份 退出登录 >>: 3 """ tag = True msg = ''' 1 查询salary 2 查询身份 3 exit''' while True: user_name = input('Please input your user_name >>> ').strip() passwor = input('Please input your passwor >>> ').strip() work_mons = input('Pleae input work_mons >>> ').strip() salary = input('Please input your salary').strip() if len(user_name) == 0 or len(passwor) == 0 or (not work_mons.isdigit()) or (not salary.isdigit()): print('用户名或密码错误或输入格式错误') continue while tag: cmd = int(input('>>>').strip()) if cmd == 1: print('总工资{0}'.format(float(salary)*float(work_mons))) continue if cmd == 2: print('unkown user') continue if cmd == 3: tag = False
1.编写for循环,利用索引遍历出每一个字符(选做题)msg='hello egon 666' 2.编写while循环,利用索引遍历出每一个字符msg='hello egon 666' 3.msg='hello alex'中的alex替换成SB 4.msg='/etc/a.txt|365|get'将该字符的文件名,文件大小,操作方法切割出来 5.编写while循环,要求用户输入命令,如果命令为空,则继续输入 6.编写while循环,让用户输入用户名和密码,如果用户为空或者数字,则重新输入 7.编写while循环,让用户输入内容,判断输入的内容以alex开头的,则将该字符串加上_SB结尾 8. 1.两层while循环,外层的while循环,让用户输入用户名、密码、工作了几个月、每月的工资(整数),用户名或密码为空,或者工作的月数不为整数,或者 月工资不为整数,则重新输入 2.认证成功,进入下一层while循环,打印命令提示,有查询总工资,查询用户身份(如果用户名为alex则打印super user,如果用户名为yuanhao或者wupeiqi 则打印normal user,其余情况均打印unkown user),退出功能 3.要求用户输入退出,则退出所有循环(使用tag的方式) 运行效果如下: user: egon password: 123 work_mons: 12 salary: 10000 查询总工资 查询用户身份 退出登录 >>: 1 总工资是: 120000.0 查询总工资 查询用户身份 退出登录 >>: 2 unkown user 查询总工资 查询用户身份 退出登录 >>:
#