一、布尔运算
1. 布尔类型
True表示真,False表示假
2. 比较运算符
==恒等,!=不等,>=大于等于,<=小于等于,>大于,<小于
print(1==2) #False
判断字符时,根据ASCII码值进行比较
print('a'!='A') #True a=97, A=65
字符串有多个字符时,只比较第一位,只有第一位相同时,才会向后比较,以此类推
print('ab'<'aB') #False b=98, B=66
True相当于1,False相当于0
print(True>False) #True
print(True+True+False) #2
3. 逻辑运算符
and 逻辑与,只要有一个为假,结果为假
or 逻辑或,只要有一个为真,结果为真
not 逻辑非,序列为真,结果为假,序列为假,结果为真
print(1>2 and 2>0 and 4>2) #False
print(1>2 or 2>0 or 4>2) #True
print(not 2) #False
print(not '') #True
print(not 0) #True
print(not None) #True
print(not []) #True
优先级 not>and>or
print(2>0 and 1>2 or 3>2 and not 1) #False
print(2>0 and 1>2 and not 1 or 3>2) #True
4. 成员运算符
in 如果在序列中找到值,结果为真,没找到,结果为假
not in 如果在序列中找到值,结果为假,没找到,结果为真
list1=[10,[20]]
print(10 in list1) #True
print(20 not in list1) #True
print([20] in list1) #True
这样在判断某个集合里是否有某元素时,就不需要用循环遍历一个一个比较,只需用成员运算符就好
二、分支语句(条件判断)
1. 基本语法
常用组合if, if-else, if-elif-else(elif可以多个)
例:输入一个数字,如果大于等于90,打印优秀;如果大于等于75,打印良好;如果大于等于60,打印及格;如果小于60,打印不及格(暂不考虑输入不合法的情况)
input1=int(input('请输入一个成绩:')) #input返回值是str型,要用int()方法转成int型
if input1 >=90:
print('优秀')
elif input1>=75 and input1<90:
print('良好')
elif input1>=60 and input1<75:
print('及格')
else:
print('不及格')
2. 复合条件判断
例:输入一个年份判断该年是否为闰年
year=int(input('请输入一个年份:'))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print('%d是闰年'%(year))
else:
print('%d不是闰年'%(year))
3. 条件恒为真(非0,'',[],None)
if 1:
print('always True')
if 0:
print('always False')
if '':
print('always False')
if []:
print('always False')
if None:
print('always False')
三、循环语句
1. for循环
1)基本语法
for 循环变量 in range(起始值, 终止值, 步长): 包含起始值,可以省略,默认为0,不包含终止值,步长可以省略,默认为1
for i in range(0,10):
print(i)
'''
0
1
2
3
4
5
6
7
8
9
'''
例:打印10以内的奇数
for i in range(1,10,2):
print(i)
'''
1
3
5
7
9
'''
2) for循环遍历列表
-
使用下标遍历
list1=[1,2,3,4,5]
for i in range(len(list1)):
print(list1[i])
'''
1
2
3
4
5
'''
-
直接遍历
list1=[1,2,3,4,5]
for one in list1:
print(one)
'''
1
2
3
4
5
'''
2. while循环
例:打印10以内的奇数
i=1
#方法一 模除
while i<=10:
if i%2==1:
print(i)
i+=1
#方法二 控制步长
while i<=10:
print(i)
i+=2
#方法三 置标志位
flag=True
while flag:
if i>10:
flag=False
else:
if i%2==1:
print(i)
i+=1
'''
1
3
5
7
9
'''
3. break和continue
break:跳出整个循环
continue:跳出当次循环
for i in range(1,5):
if i==3:
break
print(i)
'''
1
2
'''
for i in range(1,5):
if i==3:
continue
print(i)
'''
1
2
4
'''
4. pass
占位符,不做任何操作,如果分支或循环里没有任何语句,编译会报错
5. 循环中的else语句
当循环成功执行完毕,会执行一次else中的语句
循环中有break,执行中跳出循环,不会执行else;有continue,会执行else
for i in range(1,5):
if i==3:
break
print(i)
else:
print('循环执行完毕')
'''
1
2
'''
for i in range(1,5):
if i==3:
continue
print(i)
else:
print('循环执行完毕')
'''
1
2
4
循环执行完毕
'''
6. 小结
如果有明确的循环次数,建议使用for循环;如果循环次数不确定,建议使用while循环
一般不在for循环中修改列表,使用while循环
例:将一个列表中的元素依次移动到新列表中
list1=[1,2,3,4,5]
list2=[]
while list1:
item=list1.pop()
list2.append(item)
for i in list2:
print(i)
print(list1)
'''
5
4
3
2
1
[]
'''
例:列表中含有多个相同元素,删除这些元素
list1=[1,2,3,2,4,2,5,2]
while 2 in list1:
list1.remove(2)
print(list1) #[1, 3, 4, 5]