一、运算符
运算符:算数运算符、比较运算符、赋值运算符、逻辑运算符
1.比较运算符:>、<、>=、<=、==、!=(不等于)
所有比较运算符的结果都是布尔值
-
x>y:比较x是否大于y,如果是结果就是true,否则结果就是false
print(10>5) print(6>10.8) print('abcdef'>'bcd') 比较字符串的大小时,不是比较两个字符串的长度,而是从两个字符串的第一个字符开始比较, 如果第一个字符串的第一个字符大于第二个字符串的第一个字符,结果就是true,否则就是false。 如果两个字符串的第一个字符相等才去比较他们的第二个字符,以此类推 print('abc'>'aba') print('abc'>'abcd') print('abc'>'abc')
-
x<y:比较x是否小于y,如果是,结果就是true,否则结果是false
print(10<5) print(6<10.8) print('abc'<'aba')
-
x>=y:比较 x是否大于或等于y。x大于y或者x等于y,结果是true,否者是false
print(10>=5) print(10>=10)
-
x<=y:比较x是否小于等于y。x小于y或者x等于y,结果是true,否则是false
print(10<=5) print(10<=10)
-
x==y:比较x和y是否相等,如果相等就是true,否则结果是false
a=10 b=20 print(a==10) print(a==b)
-
x!=y:比较x和y是否不相等,如果不相等就是true ,否则就是false
print(a!=10) print(a!=b)
2.赋值运算符:==,+=,-=,=,/=,//=,*=,%=
所有的赋值运算符,左边必须是变量,
a=20
b=a 如果a的值是基本数据类型(数字、字符串),直接将a里面存的值赋给b,如果值是对象,传递的是变量中存储的地址
表达式(本身有值的语句):10,a,10+a,10>20,10+20/4*3等
a+10
print(a)
-
+=
a+=10 相当于a=a+10 print(a) 或 a+=1 print(a)
-
-=
a-=10 相当于a=a-10 print(a)
-
*=
a*=2 相当于a=a*2 print(a)
-
/=
a/=2 相当于a=a/2 print(a)
-
//=
a//=2 相当于a=a//2 print(a)
-
**=
a**=2 相当于a=a**2 就是a的2次方 print(a)
3.逻辑运算符:and(与),or(或),not(非)
逻辑运算符中表达式的值都是布尔值
-
表达式1 and 表达式2:两个表达式的值都为true,结果才是true,否者是false。(and-->并且的意思)
print(True and True) print(True and False) print(False and True) print(False and False)
举例:
age=40
face=90
要求:年龄大于18小于50,并且颜值不能低于80分
result=age>18 and age<50 and face>=80
print(result)
-
表达式1 or 表达式2:两个表达式的值都为false,结果才是false,否则都是true
print(True or True) print(True or False) print(False or False) print(False or False)
举例:
grade=8.0
score=80
奖学金要求:绩点大于8.0或者测评大于90
result=grade>8.5 or score>90
print(result)
注意
奖学金新要求:1.绩点大于9.7 2.成绩8.5-9.7,测评分大于85
python里可以这样写8.5<=grade<=9.7 ,但是只是限于数字的比较。
运算表达式中,加()可以改变运算顺序
result=grade>9.7 or (8.5<=grade<=9.7 and score>85)
print(result)
-
not 表达式:如果表达式的值为true,结果就是false;表达式的值为false,结果就为true。
print(not True) print(not False)
举例:
及格的要求:成绩不小于60.
grade=8 给变量赋值时,后面的值会覆盖前面的值
result= not (grade<6)
print(result)
举例:
进入游乐场年龄的要求:不大于12岁并且要不小于2岁
age=18
result=(not age>12) and (not age<2)
print(result)
二、运算符的优先级
1.赋值运算符的优先级最低
result = True and False or True
print(result)
注意:
赋值运算符<逻辑运算符<比较运算符<加减<乘、除、取余、整除、幂运算<+(正号)、-(负号)
可以加括号改变运算的运算顺序(遇到括号就先算括号里的)
举例:
a=True and False
print(a)
result=-10 and 2
print(result)
result=0>-10 and 2<5
print(result)
result=2+10>3
print(result)
三、字符串
由单引号或者双引号括起来的文本
'acdf'
'234'
'\nhu90'
'我是字符串@ss'
-
1、python中的字符串都是Unicode字符串
Unicode编码:就是一种对字符的编码方式(将字符编码成对应的数字,方便计算机储存)
Unicode编码又叫万国码,支持目前几乎所有的语言文字编码
Unicode包含ASCII码
数据存储在计算机中是以二进制的形式存的(二进制是数字)
编码的作用就是将字符串转换成对应的数字
将Unicode码换换成字符
char=chr(0x4e01)
print(char)
将字符转换成Unicode码
code = ord('范')
print(code)
for x in range(0x2c80,0x2CFF):
print(chr(x),end=' ')
字符串比较大小的时候,实质就是比字符的Unicode编码的大小
-
2.字符串的长度
就是指字符串中字符的个数
'abc' #长度为3
' yu' #长度为3 空格也有长度
len(字符串):获取字符串的长度
str1='你好,python'
length=len(str1)
print(length)
print(len('范'))
-
3.获取字符/子串
str1='Hello,python'
a.获取某一个字符
格式:字符串变量[下标]
下标:从0开始的数字,代表的是某一字符在字符串中的偏移量(位置)(范围:0~字符串长度-1)
注意:下标不要越界,否则会Indexerror报错
print(str1[0]) 获取第0个字符
print(str1[5]) 获取从0开始的第5个字符
print(str1[20]) IndexError: string index out of range下标越界
下标也可以是负数:也不能越界
print(str1[-1]) 获取的是倒数第一个字符(最后一个)
print(str1[-2]) 获取倒数第二个字符
print(str1[len(str1)-1]) 获取最后一个字符
b.获取字符串中某一部分的字母(获取子串)
格式:字符串变量[开始下标:结束下标] --->获取从开始下标到结束下标前的所有字符
str1='Hello,python!'
注意:开始下标对应的字符可以取到,结束下标对应的字符是取不到的
print(str1[1:4]) 获取从下标是1开始,到下标是(4-1)的所有的字符
print(str1[6:10]) 获取从下标是6开始,到下表是9的所有的字符
开始下标不写,默认就是0
print(str1[:5]) 获取从开始到下标是4为止的所有字符
结束下标不写,就会取到最后一个字符
print(str1[-4:])
print(str1[6:])
如果结束下标在开始下标的前面,就会取不到字符(不能倒着取)
print(str1[5:1])
如果不写就是获取全部,但意义不大,后面其他会用到
print(str1[:])
-
4.字符串的运算符:+,*,in,not in,
+:字符串的+操作,就是字符串连接
str2='aaa' + 'bcd'
print(str2)
str1='Hello'
str2='world'
str3=str1+'\t'+str2
print(str3)
str2+='!' #str2=str2+'!'
print(str2)
:字符串中的操作,就是字符串重复多少次
str1='abc'*10 #abc重复10次
print(str1)
字符串1 in 字符串2:判断字符串2是否包含字符串1.(显示的是布尔值)
str1='Hello'
print('he'in str1) #判断'he'是否在str1里面(判断str1中是否包含'he')
字符串1 not in 字符串2:判断字符串1是否不在字符串2中
print('ae' not in str1)
四、print函数的使用
print()函数可以打印括号里的任何内容
调用print函数打印完后会换行
print(10)
str1='aaa'
print(str1)
同时打印多个内容(多个内容间用逗号隔开);打印的时候,多个内容之间用一个空格隔开的
print('aa',100,str1)
-
1.格式化输出
print('%s %d %c'%(var1,var2,var3)):输出字符串的时候,在字符串中使用字符串格式符表示变化的内容。然后在%后面的括号里面,依次使用表达式给前面的字符串赋值
%s:字符串 %d:整数 %f:浮点数 %c:字符
name='张三'
age=18
我是xxx,今年xx岁
print('我是%s,今年%d岁'%(name,age))
%f
print('余额:%f万元'%(10.25))
$.2f保留小数点的后两位 三位就是%.3f
print('余额:%.2f万元'%(10.25))
python中的字符,就是指长度为1的字符串
print('%c'%('a'))
print('%c'%(0x4e00)) #打印的是中文的:一
可以打印unicode编码
%o
print('%o'%(10))
%X/%x
print('%x,%X'%(15,15))
-
2.通过设置print函数的sep参数,可以改变print函数在同时打印多个内容时的分割符(默认是空格)
name='张三' age=18 我是xxx,今年xx岁 print('我是',name,',今年',age,'岁',sep='') #打印多个数据的时候,数据之间没有间隙 print('我是',+name+,'今年',age,'岁') #注意:加号两边只能都是数字或者都是字符串,不能一个数字一个字符串 print('aa',100,'bbb',sep=',') #打印多个数据的时候,数据之间以','隔开
-
3.设置print函数的结束字符串,默认是'\n'
print('Hello',end=' ') print('World') 注意:设置sep和end参数,只是当次有效
五、字符串的内置函数
-
capitalize() 将字符串的第一个字符转换为大写(不会改变原来的字符串,而是返回一个新的字符串)
str1='python student' newStr=str1.capitalize() print(str1,newStr)
-
2.title()将字符串中每个单词的首字母变成大写(不会改变原来的字符串,而是返回一个新的字符串)
单词的区分,和英语区分单词的方式是一样的(以空格、标点符号分开的字符串)
newStr=str1.title()
print(str1,newStr)
-
3.center(width,fillchar) 将字符串变成指定的长度,并且原字符串内容居中,剩余的位置使用指定的字符fillchar填充
str1='abc' newStr=str1.center(11,'-') print(newStr)
六、补充
-
1.find ( )检测字符串
用法格式:str1.find(str2) #在str1中 检索字符串str2是否存在,存在,返回str2的初地址,不存在,返回-1.
str1.find(str2,x)#x是表示下标的变量,意为:从下标为x的位置开始检索str2是否存在于str1中.
str.find(str2,x,y)#y表示下标整型变量, 意为:从下标x开始,检测到下标y结束
str1 = "hello,world,nihao,shijie"
str2 = "ll"
str1.find(str2)
2
str1.find(str2,1)
2
str1.find(str2,2)
2
str1.find(str2,3)
-1
str1.find(str2,1,6)
2
str1.find(str2,1,4)
2
str1.find(str2,1,3)
-1
-
2.rfind( )反向(从右至左)检测字符串 str2最后出现的 下标
str1.rfind(str2)#从 str1中从右至左检测str2是否存在
str1.rfind(str2,x,y)#【x,y)定位检索的位置,之后正常反向检索,输出字符串首字母下标。
str1.rfind(str2)
2
str1.rfind(str2,0)
2
str1.rfind(str2,2)
2
str1.rfind(str2,2,3)
-1
str1.rfind(str2,2,5)
2
-
3.count()方法语法:
str.count(str1) #计数 str中,子串”str1“出现的次数
str.count(str1,x) #计数 str中从下标x开始,子串”str1“出现的次数
str.count(str1,x,y) #计数 str中从下标x开始,子串”str1“出现的次数
str = "hello,world,nihao,shijie"
count(",")
-
4.split()方法语法
str.split( )#默认切片条件为:所有的空字符,包括空格、换行(\n)、制表符(\t)等
str.split(str1,num)#切片条件为:检索到str1,切片次数为num
利用re模块进行切片(同时包含多个分隔字符的检索)代码如下:
import re
a=str#待检测字符串
x=re.split( 此处为多个输入的分隔符 ,a)
print(x)
-
5.max()方法语法 max(str)#输出字符串中的最大字符
-
6.min()方法语法 min(str)
str = "abcdshjshf" max(str) 's' min(str) 'a' str = "12345676789" max(str) '9' min(str) '1'
-
7.lower()方法语法:
str.lower()#直接将字符串str中的所有大写字母转换成小写字母
str = "ZGAHHHhihhoioai"
str.lower()
'zgahhhhihhoioai'
-
8.replace()方法语法:
str.replace(old,new)#直接将老字符串替换为新的字符串
str.replace(old,new[,max])#指定参数max,以为替换次数不超过max;
str = "this is in china"
str.replace("is",'was',1)
'thwas is in china'
str.replace("is",'was',2)
'thwas was in china'
9,index()方法语法:
str.index(str1)用法同find(),只是如果被检测的字符串中不含想要查找的内容的话,会报一个异常
str.index("is")
2
str.index("wax")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
-
10.rindex()类似于index(),方向为从右至左
-
11.lstrip()方法语法:rstrip()同用法
str.lstrip()#截掉字符串左边的空格(有多少,截掉多少)
str = " this is China"
str.lstrip()
'this is China'
str = "zhang "
str.rstrip()
'zhang'