python学习笔记(一)

第一章

变量命名规范

  1. 必须是数字或字母或下划线组成
  2. 不能是数字开头,更不能是纯数字
  3. 不能用python关键字
  4. 不要用中文
  5. 不要太长
  6. 要有意义
  7. 推荐使用下划线 或者驼峰命名

大写表示常量,但是python中没有绝对意义上的常量

数据类型:区分不同的数据,不同的数据类型应该有不同的操作

数字:+-*/

     整数:int

     小数:float

文字:展示

      字符串:str

表示方式:

                ‘’

                “”

                ‘’’  ‘’’(多行)

        操作:

           + 左右两端必须是字符串,表示字符串连接操作

           * 一个字符串只能乘一个数字,表示字符串重复的次数

布尔(bool):条件判断    

Ture

False

交互1:

变量 = input(提示语)   坑:input()得到的一定是字符串

print(type(a)) 查看字符串

a = int (a)    #将a的类型转换成整数类型

if 语句的语法规则:

              1. if 条件1:  #注意此处的冒号

                      代码1     #py中用缩进来划分层级

                else  条件2:     # if可以嵌套

                      代码2

                如果条件成立就执行代码,不成立就跳过

              2.if 条件1:

                       代码1

                elif 条件2:

                      代码二

                  elif 条件3:

                      代码3

                  else:

                      代码4

While循环:

        while  条件:

              代码

过程:判断

Pass(关键字):代码占位  

eg:a= 10

    if a >100:

      pass

    else

第二章

int : 整数  +-*/  大小比较

float : 小数\浮点数 小数:数据范围是无限的  整数:在某一特定的区间可以表示的很 清楚

bool :条件判断  取值范围:True和False    非0表示True,非空字符串表示True    ->在py中,表示空的东西都是False,不空的东西都是Truezi

str字符串的格式化 : %s,%d

             name = input(“请输入你的名字:”)

             print(“我叫%s” %(name))

             print(“我叫{ }”.format(name))

print(f“我叫{name}”)  #3.5之后

   

字符串的常规操作  %字符串的操作一般不会对原来的字符串产生影响,一般是返回一个新的字符串

S1 = s.capitialize()  #首字母大写

S1 = s.title()          #语句各单词首字母大写

S1 = s.lower()      #所有字母小写  处理部分欧洲文字有问题

S1 = s.upper()      #所有字母大写  忽略大小写多用upper

字符串的索引和切片

索引:

S = “我叫周杰伦“  #采用索引的方法提取字符串里面的字

print(s[3])#可以是-1,从倒数第一开始数

切片:  #从字符串中提取一部分内容

S[3:6]  #从索引3开始,到6结束

Eg:s = “我叫周杰伦,你呢?你叫周润发吗“

    Print(s[3:6])  #前闭后开

  •  杰伦,

S【start:end:step】

字符串的切割和替换

S1=s.Strip()  #去掉语句左右两端的空格

User_name = input(“输入你的用户名:”).strip()  #去掉两边的空白符(空格,\n,\t)

S1 = s.replace(old,new)   #字符的替换

S1 = s.split(用什么切割)  #字符串的切割

a = “python_java_c_c#_javascript”  #用谁切割,就会损失谁

lst = a.split(“_”)   #切割之后结果会放在列表中

print(lst)  à [‘python’,’java’,’c’,’c#’,’javascript’]

字符串的查找和判断

查找:

S = “你好啊,我叫周润发”

  1. ret = s.find(“周润发”)  #返回如果是-1就是没有该字符串出现

print(ret)

2.  ret = s.index(“周润发“)  #如果报错,就是没有

3.  print(“周润发” (not)in s) #返回ture或者false

判断:

Name.startwith( )# name以什么开头

Name.endwith( )#name以什么结尾

Money.isdigit()#字符串是否以整数组成

补充:

Len(s)  #计算字符串的长度

.Join()  #对列表里的元素进行一个拼接

Eg:lst  =(“赵本山”,”王大拿”,“大张伟”,“马大哈”)

    S = “_”.join(lst)

    Print(s) 

à 赵本山_王大拿_大张伟_马大哈

   

List列表

特性:1.也像字符串一样有索引和切片

  1.  索引如果超过范围会报错
  2.  可以用for循环进行遍历

列表的增删改查

增加

lst = []

lst.append(元素)            #追加元素

lst.insert(位置,元素)     #插入

lst.extend(列表或者其他可迭代的东西)#合并两个列表(批量的追加)

删除

lst.pop(位置)#给出被删除的索引,返回被删除的元素

lst.remove(元素)#删除某个元素

修改

Lst【位置】= 元素 #直接用索引进行修改

查询

print(lst【位置】)#直接用索引进行查询

列表的其他操作

排序   #列表会按照你存放的顺序排序

Lst.sort() #对列表进行升序排序

Lst.sort(reverse=ture) #对列表进行降序排序“

列表的嵌套

Lst=【‘abc’,‘def’,【“呵呵呵“,”哈哈哈“】】

Tuple元组  特点:不可变的列表

T = (“张无忌”,“赵敏”)   #一般用于固定了某些数据,不允许外界修改

T = (“哈哈”)                      #如果元组只有一个元素,类型会变成字符串,想    变成元组,需要在“哈哈“后面加一个逗号

T = (1,2,3【“哈哈哈”,“么么哒”】)#元组里面的列表可以变

Set集合  #无序的,不能放列表,unhashable type(哈希)

            #py中的set集合进行数据存储的时候,需要对数据进行哈希计算,根据计     算出来的哈希值进行数据存贮,也就是说,set集合要求存储的数据必须是可以进行哈希计算的

   可哈希:不可变的数据类型:int,str,tuple,bool

S={ }是字典

S={元素}是集合

S=set()#创建空集合,列表,元组同理

增加

s.add(元素)  #添加元素

删除

s.pop(空)   #没有索引,默认弹出内存最后一个,但集合无序,测试时没法验证

s.remove(元素)

修改

想要修改,先删除,再新增

先remove,再add

交集(&,intersection()),并集(|,union()),差集(-,difference())

Dict字典  #字典是以键值对的形式进行存储数据的,表示方式:{key1:value1,key2,value2

Dic = {“jay”:“周杰伦”,“金毛狮王”:“谢逊”}  #key必须是可哈希的值

Val = [“jay”]  #字典的key必须是可哈希的数据类型,value可以是任何数据类型

字典的增删改查

增加

dic[‘jay’] = “周杰伦”  #可用于增加,也可用于修改

dic.setdefault(“tom”,“胡辣汤”) #设置默认值,如果前面已经有tom,setdefault不起作用

删除

dic.pop(“key”)  #根据key进行删除

查询

Print(dic【key】)#通过key直接查询,如果key不存在,程序报错

Print(dic.get(“key”))#若果程序不存在,程序返回none

字典的循环和嵌套

循环

1.For key in dic

   Print (key,dic【key】)

2.print(dic.keys())   #拿到所有的key

3.print(dic.values())  #拿到字典里的value

4.print(dic.items())   #拿到字典里的所有ket和value

a , b = (1,2)   #元组和列表都可以执行这个操作,该操作被称为解构(解包)

print(a)

print(b)

à1

  2

For key,value in dic.items():

Print(key,value)

  • Key  value

嵌套  #查询的时候参考列表

Wangfeng = {“name” = “汪峰,

“age“ = 18,

“wife“ : {

       “name” : “章子怡”

       “hobby”:”演戏”

       “assistant”:{

                   “name”:“樵夫”

                   “age”:19

                   “hobby”:“打游戏”

}

}

“children“:【

           {“name“:”孩儿1“,”age“:13},

           {“name“:”孩儿2“,“age“:10},

           {“name”:“孩儿3”,“age”:8},

}

Wangfeng【‘children’】【1】【‘age’】#第二个孩子的年龄

Wangfeng【‘children’】【1】【‘age’】+1  #第二个孩子加一岁

字典的循环删除

在循环的时候,不能直接删除

字符集和编码

0 1ó1010101010ó二进制转化成十进制ó88

电脑如何进行存储文字信息

1000000óa

ASCII编排了128个文字符号,只需要7个0和1就能表示,为了新的符号预留出1位,正好为1 byte,也就是8bit

ANSI => 一套标准,每个字符16bit,2byte

00000000 01111111

到了中国,gb2312编码,gbk编码(windows默认),gb18030编码

到了台湾,big5编码

到了日本,JIS编码

Unicode:万国码  (概念)

早期Unicode没有意识到汉字过多的问题,UCS-2,2个字节

进行了扩充,UCS-4   4个字节

00000000 00000000 00000000 00000001

utf:是可变长度的unicode,可以进行数据的传输和存储

utf-8 :最短的字节长度8

      英文:8bit,1byte

      欧洲文字:16bit,2byte

      中文:24bit,3byte

utf-16 :最短的字节长度16

总结:

  1. ascii:8bit,1byte
  2. gbk:16bit,2byte  (windows默认)
  3. Unicode:32bit,4byte(没法用,只是一个概念)
  4. Utf-8

           英文:8bit,1byte

           欧洲文字:16bit,2byte

           中文:24bit,3byte

 

     gbk和utf-8不能直接进行转化

    

 bytes字符

 s = “周杰伦”

bs1 = s.encode(“gbk”)  #转变成gbk标准下的字节

bs2 = s.encode(“utf-8”) #转变成utf-8标准下的字节

转换

先解码 ,再编码

S = bs.decode(“什么标准编码”)

Bs2 = S.encode(“编成什么码”)

运算符

  1. 算术运算

+  -  *  /  %  //

  1. 比较运算

==  !=  >  <  >=  <=

  1. 赋值运算

=  +=  -=  *=

  1. 逻辑运算
  1. and  并
  2. or   或
  3. not  非

括号  >  not  >  and  >  or

  1. 成员运算

in

    not in

文件操作

F = open(文件路径,mode=“ ”,encoding=“ ”)  #需要手动close

with open(“文件路径”,mode=“ ”,encoding=“ ”)as f : #上下文,不需要手动关闭文件

      文件路径“:

  1. 绝对路径  #不利于项目迁移

D:/test/xxx.txt

  1. 相对路径

相对于当前程序所在的文件夹

Open(“国产自拍.txt“)  #读取当前文件夹下的文件

Open(“../葫芦娃.txt“)  #获取其他文件夹下的文件,../表示上一层文件夹

Open(“../01XXX/XXX/XXX.TXT“)#其他文件夹下的文件

      Mode:

              r:read 读取

              w:write  写入

                  a:append  最佳写入

                  b:读取非文本文件

          encoding:

                  mac默认utf-8

                  windows默认gbk

                读:

f = open(“国产自拍.txt“,mode=“r”,encoding=“utf-8”)

                   content = f.read()  #全部读取

                   line = f.readline()  #读一行

                   line = f.readline()  #读第二行

                   line = f.readline().strip()  #读第三行,且去掉空格

           content = f.readlines()  #全部读取,放进列表

          

           for line in f:  #利用循环从f中读取每行数据

                   print(line.strip())

         

               

            写:  #如果文件不存在,则会自动创建出一个文件

                  #w模式下,每一次open都会清空文件中的内容

               f = open(“文件路径”,mode = “w”,encoding = “utf-8”)

               f.write(“胡辣汤”)  #写入内容

               f.close()         #关闭文件

                           for item in lst:       #将列表内容使用循环写入文件

                   f.write(item)

                   f.write(“\n”)

               f.close( )

              

               f.open(“文件路径”,mode=“a”,encoding = “utf-8”)

               f.write(“你好厉害”)   #直接写入,不会清空文件夹内的东西

            读取图片:

                 With open (“胡一菲.jpeg”,mode=”rb“)as f  #非文本文件加个b

                          For line in f:

                             Print(line)

             文件的复制:

              With open(“胡一菲.jpeg”,mode=“rb“)as f1,\   # \表示换行

                   open (“胡二菲.jpeg”,mode=“wb“) as f2 :

                   for line in f1:

                      f2.write(line)

              文件的修改:

              Import os

              with open(“文件路径1”,mode=“r”,encoding=“utf-8”)as f1,\

                      open (“文件路径2”,mode=“w”,encoding=“utf-8”) as f2 :

                  for line in f1:

                     line = line.strip()    #删除空格

                     if line.startwith(“周”)

                       line = line.replace(“周”,“张”)

                     f2.write(line)

                     f2.write(”\n”)

                 time.sleep(3)  #停止3s

                 #删除原文件

                 os.remove(“文件路径1”)

                 time.sleep(3)  #停止3s

                 #把副本文件重命名成原文件

                 os.rename(“文件路径2”,“文件路径1”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想住在山里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值