一、If 条件判断
1、if条件判断的基本形式
python中,if语句用于控制程序的执行,基本形式为:
if 判断条件 : ----------------→逻辑、成员运算、比较运算
(缩进)执行语句.....
else: ----------------→else:后面没有表达式
( 缩进)执行语句.....
其中,①”判断条件” 成立时(非0),则执行其后面的语句,执行内容可以是多行,以缩进来区分表示同一范围。
② else 为可选语句,在if判断条件不成立时,才会执行
③ 缩进 遇到冒号 就要缩进 标准的一个缩进=4个空格,注意4个空格并不等于一个tab。python中用tab是不规范的用法,一般用4个空格。但是在pychram中tab 跟4个空格是一样的,但是在python里面是不一样的!!!!
例1:
age = int(input('请输入您的年龄:')) if age > 18 : print('已成年') else: print('未成年') #结果 #20 #成年 当判断条件成立时,执行判断后面的语句,就结束了,不会再往下执行
例2:
s = 'hello' if 'l' in s: #成员关系运算符 print('s的字符串里面有l') else: print('s的字符串里面没有l') #结果:s的字符串里面有l
例3:
a = 10 b = 5 if a >8 and b > 8: #逻辑运算符 print('a,b都大于8') else: print('a,b并不是都大于8') #结果:a,b并不是都大于8
2.if ...elif...elif....else...
在一个if 表达式中,即一个完整的if ...elif...elif....else...中,如果运行了其中一个条件,其他的分支条件不会再运行了!!!!
总结起来:当其中一个条件满足,其他的条件分支自动屏蔽,不会再运行!!!
if 4 > 3: print('这是真的') elif 4 != 3: print('这也是真的') else: print('这是假的')
结果:这是真的
上述第一个条件成立,直接执行运行结果,不会再去执行别的分支了(即使别的分支的条件也是为True)
3.if后面最关心的是什么?------→判断是True 还是False
形式 if a: ( 隐含有bool(a),是True 还是False)
① a是None 0 {} [ ] () “” False ,就是等同于 if False:,就是条件不成立,不会执行if 下面的语句,而是执行else里面的语句
② a 是非空类型的,就等同与 if True:,就是条件成立,直接执行if下的语句,结束。(不会再去处理else了)
a 是True
if 1: #True的, print('我是if下面的语句') else: print('我是else下面的语句') #结果:我是if下面的语句
a是False
if {}: #False的, print('我是if下面的语句') else: print('我是else下面的语句') #结果:我是else下面的语句
if not a:判断某个变量是否为空 ,是否存在(用的非常多)
4.else 是可选语句 在判断条件不成立时,执行相关语句
说明else 不是必备的 。要不要加else,根据自己的判断逻辑和业务逻辑去自行决定。(加上else,逻辑会更完整)
a = 10 if a > 18: print('a 的值大于18') #结果:没有输出结果
a = 20 if a > 18: print('a 的值大于18') #结果 a 的值大于18
5.if 的嵌套
例1
a = 4 b = 6 member = ['java', 'ruby', 'python', "c"] one_name = 'c' if a > b: print("我是if下面的语句!") if one_name in member: print("我是member里面的一种语言") else: print("我不是member里面的一种语言") else: print("我是else下面的语句!") #结果:我是else下面的语句!
a = 8 b = 6 member = ['java', 'ruby', 'python', "c"] one_name = 'c' if a > b: print("我是if下面的语句!") if one_name in member: print("我是member里面的一种语言") else: print("我不是member里面的一种语言") else: print("我是else下面的语句!") #结果:我是if下面的语句! #我是member里面的一种语言
例2"age1 = input("张三的年龄:")
age2 = input("李四的年龄:") if int(age1) > int(age2): print("张三的年龄大于李四") if 1: print("hello") elif int(age1) < int(age2): print("李四大于张三") # 2 个条件表达式 if int(age1) >= int(age2): print("张三的年龄大于等于李四") if True: print("world") else: print("其他可能性")
"""结果
张三的年龄:19
李四的年龄:18
张三的年龄大于李四
hello
张三的年龄大于等于李四
world"""
总结 :python运行一个文件的时候,会查看所有顶格写的代码。一个完整的if表达式只会看某一个满足条件的语句。
6.if...if...if...else: (用的比较多)
if 1: pass if 2: pass if 3: pass else: print('hello') #else是最后一个if成对的
二、for 遍历
什么是遍历? 就是每个元素都想看看(for 循环,遍历,迭代, 是自动播放所有列表(序列)当中的元素)
应用在哪些数据类型:字符串 列表 元组 字典 集合(可迭代的对象就可以for循环)
for循环里面有个隐藏机制:index + 1
例1:列表的迭代
songs = ['爱转角', "晴天", '人来人往', '左手指月'] for each in songs: print("正在播放歌曲:{}".format(each)) """ 正在播放歌曲:爱转角 正在播放歌曲:晴天 正在播放歌曲:人来人往 正在播放歌曲:左手指月 """
列表的切片 字符串的for循环
my_list = ['hello','love','python','lemon'] for i in my_list[1:]: print(i) for j in my_list[0]: print(j) # love # python # lemon # h # e # l # l # o
例2:元组迭代,同上述列表
例3:字典的迭代
1.对字典使用for循环,取到的默认是字典所有的Key
语法:for each in dict1: ( 或者 for each in dict1.keys():)
dict1 = {"name": "jay", "age": 28, "hobby": "sing"} for each in dict1: #遍历所有的key print(each) for each in dict1.keys():#加上key()输出的结果一样 print(each) #结果 name age hobby name age hobby
2.取字典的值
语法:for each in dict1.values(): (或者 for each in dict1: print(dict1[each]) )
dict = {"name": "jay", "age": 28, "hobby": "sing"} for each in dict: #遍历所有的值 print(dict[each]) for each in dict.values(): #使用value()函数 print(each) #结果: jay 28 sing jay 28 sing
3.取字典的键值对
语法:for each in dict1.items(): (或者 for key,value in dict1.items():)
dict1 = {"name": "jay", "age": 28, "hobby": "sing"} for each in dict1.items():#遍历所有的键值对 print(each) for key,value in dict1.items(): print('key:valuse是{}'.format(key,value)) """ ('name', 'jay') ('age', 28) ('hobby', 'sing') key:valuse是name key:valuse是age key:valuse是hobby """
集合也可以for循环,一般不用,用列表即可。
for循环的嵌套:主要用来获取测试用例的数据
(应用:九九乘法表、排序算法(冒泡排序,选择))--------面试
1.range()函数 :用在你想重复执行多少次计算的时候,没有现存的列表可以循环,就用range()
range(1,10)表示取1,2,3,4,5,6,7,8,9,类似于切片,取头不取尾
range(1,10,2),增加步长为2,表示取1,3,5,7,9
for i in range(1, 10,3): print(i) for i in range(1, 10): print(i, end=' ') # 不会换行,以空格隔开
结果:
1
4
7
1 2 3 4 5 6 7 8 9
2.for循环嵌套实例
总结:for 循环的嵌套,就是外层取一个值,内层取全部值,再返回外层。。。。依次循环。(外层一个,内层一遍)
list1 = ['A','B','C','D'] list2 = ['E','F'] for each1 in list1: print(each1,end = ' ') for each2 in list2: print(each2,end = ' ')
结果:A E F B E F C E F D E F
fruits = [ ['苹果','香蕉'], ['梨子','橘子'], ['西瓜','草莓'] ] for group in fruits: print(group) for name in group: print(name)
结果:
['苹果', '香蕉']
苹果
香蕉
['梨子', '橘子']
梨子
橘子
['西瓜', '草莓']
西瓜
草莓
测试用例的数据获取:
cases = [ {'url':'/login','method':'get','data':'username'}, {'url':'/logout','method':'post','data':'username'} ] for case in cases: print(case) for k,v in case.items(): print(k,v) # {'url': '/login', 'method': 'get', 'data': 'username'} # url /login # method get # data username # {'url': '/logout', 'method': 'post', 'data': 'username'} # url /logout # method post # data username
三、while循环(没for循环用的多)
1.while循环的应用场景:没有具体的可迭代对象,没有遍历,不知道要循环多少次,不知道什么时候结束
2.基本语法
while 条件:
代码
3.执行流程:当把while循环下面的子分支执行完毕以后,程序会返回while的条件判断。就是一个加强版的if 判断
while 循环是把for循环的机制手动化了。即while循环需要手动控制
cases = [ {'url':'/login','method':'get','data':'username'}, {'url':'/logout','method':'post','data':'username'} ] index = 0 while index < len(cases): print(cases[index]) index += 1 # {'url': '/login', 'method': 'get', 'data': 'username'} # {'url': '/logout', 'method': 'post', 'data': 'username'}
4.break:跳出循环,执行循环体之外后面的代码了(也可以用在for循环)
cases = [ {'url':'/login','method':'get','data':'username'}, {'url':'/logout','method':'post','data':'username'} ] index = 0 while True: print(cases[index]) if index == 1: print('这里是index={},跳出循环'.format(index)) break index += 1 # {'url': '/login', 'method': 'get', 'data': 'username'} # {'url': '/logout', 'method': 'post', 'data': 'username'} # 这里是index=1,跳出循环
5.continue:跳出本次循环,执行下一次循环(也可以用在for循环)
index = 0 while index < 2: print('这里是continue之前') index += 1 continue print('这里是continue之后') #continue跳出本次循环,开始下次循环,永远不会执行这句话 print('python') # 这里是continue之前 # 这里是continue之前 # python
6.pass:占坑(子语句还没设计好怎么写,就用pass代替,保持语法的完整性)
if 1: pass elif 2: pass else: print('python')
7.while循环的嵌套(外层一个,内层一遍)