2018年6月13日【Python学习笔记】

一、运算符

运算符:算数运算符、比较运算符、赋值运算符、逻辑运算符

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'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容