关系和逻辑运算符
ASCII值
定义
在键盘的核心打字区域的47个按键中的每个按键可以产生两个字符,共计94个字符,加上由空格键产生的一个字符,共计95个字符,这些字符对应的数字在32-126之间,这些数值称为这些字符的ASCII值。
注:ASCII标准给一些字符赋的值也会高于126
chr()/ord
n = 77
print(chr(n)) #打印输出ASCII值为77的单字符串
str = 'a'
print(ord(a)) #打印输出单字符串'a'的ASCII值
关系运算符
- 按字典序排序:数字优先于大写字母,大写字母优先于小写字母,两个字符串逐个字符(从左到右)进行比较来确定哪个字符串应该优先于另一个。
- 整型数可以与浮点数进行比较,其他不同类型的值不能进行比较,例如,字符串不能与数字进行比较。
- 关系运算符可以用于列表或元组中。要使两个列表或两个元组相同,它们必须有相同的长度,对应位置的元素也必须是相同的值。
- 条件的真值的判断通过依此比较对应元素值直到两个元素不同(或者不能比较)为止,或者直到其中一个序列没有元素为止
[3,5] < [3,7] [3,5] < [3,5,6] [3,5,7] < [3,7,2] [7,"three",5] < [7,"two",2]
注:条件”three”==3的值为假,但条件”three”<3将会触发一个Traceback错误
in运算符
当in这种运算符用于一个列表或元组时,意味着包含关系
'b' in ['a','b'.'c'] #b是该列表的子字符串
'B' not in ('a','b','c') #B不是该元组的子字符串
列表元素的排序
列表中的元素可以用sort方法进行比较和排序
list1.sort()
将list1改变为一个拥有相同元素的序列,但是其中的元素不管是数字还是字母都按照升序排列。
sorted函数
sort方法改变了列表中所有元素的顺序,sorted函数则返回一个新的排好序的列表
list2 = sorted(list1) #list2会包含和list1一样的元素,但list2已经排好序
注:sort()方法不能用于赋值语句,sort没有返回值,所以list2 = list1.sort()只是在原地对数据进行重排。
逻辑运算符
and、not、or
- 短路求值:当python遇到复合条件(cond1 and/not/or cond2)时,它会首先对cond1求值,如果cond1为假,python会认为整个复合条件为假,进而不会对cond2求值。
- 布尔数据类型:True/False
- 当数字作为条件时,0会被赋值为False,其他所有其他数字会被赋值为True
三种返回布尔值的方法
startwith()/endwith()
"fantastic".startwith("fan") #fantastic以fan开头,True
"fantastic".endwith("stic") #fantastic以stic结尾,True
"fantastic".startwith("Fan") #False
"elephant".endwith("fant") #False
isinstance()
isinstance("32",int) #False "32"的数据类型是否为整形
isinstance(32,int) #True
判断数据类型的方法
假设str1是非空字符串
- str1.isdigit() str1的所有字符都是数字
- str1.isalpha() str1的所有字符都是字母表上的数字
- str1.isalnum() str1的所有字符都是字母表上的字母或数字
- str1.isspace() str1仅含有空白字符
判断结构(分支结构)
if-else语句
if condition1:
语句块1
else:
语句块2
注:语句块中的每行语句必须向右缩进相同的距离,缩进代表了一个块的结束和开始(使用4个空格缩进语句块)
嵌套语句
if-else的缩进块中可以包含其他的if-else语句
if condition1:
if condition2:
语句块1
else:
语句块2
else:
语句块3
elif子句
if condition1:
语句块1
elif condition2:
语句块2
elif condition3:
语句块3
else:
语句块4
while循环
while condition: #循环的头部,condition被称为循环的继续条件
循环体
- 循环体的每次执行称为通过该循环的一轮(pass)
- 继续条件是个布尔表达式,等于True或False
- while循环可以用来做输入验证
break/continue
- 当break语句执行时,循环会马上终止,跳出整个循环
- 当continue语句执行时,当前循环终止,进行下一轮循环
while x>10: if condition: print("hello") break #执行print("hello,world") else: print("world") continue #执行while x>10 print("hello,world")
for循环
for var in sequence: #sequence可以是等差数列、字符串、列表、元组或是一个文件对象
语句块
等差数列的循环遍历
range()函数
range()函数可以用来产生一个等差数列,如果m/n是整数,并且m < n,则函数range(m,n)会产生一系列整数m,m+1,m+2…..n-1
range(0,4) #0,1,2,3 可以被简写为range(4)
range(-2,3) #-2,-1,0,1,2
注:若想输出range函数的值,可以使用print(list(range(1,5)))
for i in range(2,6):
print(i,i*i)
输出:
2 4
3 9
4 16
5 25
range()函数的步长值
range(m,n,s)会产生整数序列m,m+s,m+2s….m + r * s,其中r是最后一个满足m + r * s< n的数。也就是说,这一序列开始于m,每一次都将m加上s,直到下一次将会产生一个数大于n,可选的n叫做range函数的步长值。
range(3,10,2) #3,5,7,9
range(-10,10,4) #-10,-6,-2,2,6
range(6,0,-1) #6,5,4,3,2,1
for循环的嵌套
for m in range(1,6):
for n in range(1,6):
print(m*n,"\t",end="") 打印横行
print() #打印竖列
#结果为一个5x5的表格
字符串的字符循环遍历
for ch in str1:
语句块 #将会从第一个字符开始,针对字符串的每一个字符执行一遍循环体,因此这个循环会被执行len(str1)次
文本文件的行循环遍历
infile = open("filename.txt",'r')
for line in infile:
语句块
infile.close()
pass语句
如果只是希望循环遍历一个序列而并不做任何事情,这种时候可以使用pass语句
infile = open("filename.txt",'r')
for line in infile:
pass
print(line.rstrip()) #打印文件的最后一行
infile.close()