python基础知识---------------江南三月听莺天,买酒莫论钱

目录

 1.与用户交互 input
 2.格式化输出 str
 3.基本运算符
 4.流程控制(while,for,if)
 5.数据类型的内置方法(int,float,str,list,dict,set,tuple)
 6.可变类型与不可变类型
 7.队列与堆栈
 8.数据类型总结
 9.字符编码
 10.python3和python2有区别的内容

----------------

一:与用户交互

1.1 输入

 input  #接受用户输入
  # python3 和 python2 的区别:
 python3中,用户输入任何值都存成字符串类型
 python2中,用户输入什么类型,就存成什么类型
 raw_input 和python3的 input 一样

1.2 输出

 print   #可以连续打印多个值  只要用逗号隔开就可以啦!

二:格式化输出

字符串的格式化输出

 str 字符串的格式化输出:  %s是一个占位符 按照顺序一一传值
 1. %s  按位置传值    # info = 'my name is %S' %('rock')
 2.%d  按位置传值,只能c数字 #info = 'my age is %d' %(25)
 3..format
 一:info = 'my name is %S'  %('rock')
 二:info = 'my name is {name}' %{'name':'rock'}
 三:info = 'my name is {1}' %('rock','egon','tony')
 # 第一种 按位置取值
 # 第二种 按照key对应的value 取值
 # 第三种 按照索引取值,可以反复使用

三:基本运算符

3.1赋值运算符

 1.  name = 'jason'      #先看左边再看右边  也可用于新增字典,列表内

3.2 算数运算符

 1.python对数字的精确度不是很高,一般借助第三方辅助,其他类型也可以使用局部的数学运算。如: print('hello' + 'world')  # 字符串拼接
  print('hello'*2)  # 字符串复制
 2.+  -   *  /   //(整除)   %(取余)   **幂指数

3.3比较运算符

 1.>  <  >=  <=  ==  != print(10 > 2)  print(2 == 2)print(3 != 4)
 # 补充 print('hello' > 'world')  
 字母内部对应着数字,A-Z 65-90, a-z 97-122

3.4逻辑运算符

 1. and   or   not  
 与  and  链接多个条件,条件必须都成立
 或   or  连接多个条件,一个成立就可以
 非  not  取反
 # 布尔值为False: 0 None '' [] {} (重要)
 三者混用有优先级,使用()括号来明确优先级

3.5成员运算

 1.  in   判断在....里面    通常与 if  一起使用
 2. not  in   取反     和上面同样概念

3.6身份运算

 1. ==   判断值是不是相等的,内存地址不一定一样
 2.is  判断内存地址是不是一样的,可以用(id) 查询
 # 值相等,内存地址不一定一样!!!
 #内存地址一样,值一定一样!!!

3.7赋值运算

3.71链式赋值

 1.  x = y = z = 10 

3.72交叉赋值

 #交叉赋值公式不需要中间变量实现互相交换,内存地址没有更改
 x , y = y , x

3.73解压赋值

 # name1, name2, name3, name4 = name_list  # 按照位置一一对应赋值
 前后数量必须相等
  l = [11, 22, 33, 44]   a, b, *_ = l  
  # *_   可以打破个数相等的规则,*_ 可以接受后面所有不需要的数据

3.74 增量赋值

 1.  x=x+1  x += 1  #相当于简写,很多运算符都可以使用

四:流程控制

4.1 if 判断

 1.if 判断条件是否成立  如果成立,执行代码,如不成立》》:
 2.elif   判断if另外的条件,如果成立,执行代码,如不成立》》》:
 3.else   if 和 elif都不成立会执行  else 代码
 #总结: if代码成立,elif和else不执行,if不成立,elif开始执行,else不执行,elif代码条件不成立,执行else子代码后结束。
 ​
 if嵌套
 if判断下还可以继续执行if嵌套,如下:
 ​
 if gender=='female' and age<30 and height > 165 and is_beautiful:
     print('小姐姐加个微信')
     if is_success:
         print('可以一起看电影嘛')
         if anser=='ok':
             print('kaixin')
         else:
             print('shiwang')
     else:
          print('baybay')

4.2 while 循环

 1.while 循环 在条件成立的前提下,继续运行子代码,子代码运行结束后继续判断条件是否成立,成立的话就继续循环,不成立结束。
 ​
 如下例题:
 while True:
     name = input('请输入账号:')
     pwd = input('请输入密码:')
     if name == 'rock' and pwd == '345':
         print('登陆成功')
         while True:
             cmd = input('你的命令:')
             if cmd == 'exit':
                 break
             else:
                 continue
         break
     else:
         print('账号密码错误')

4.2.1 while 循环组合

 1.while 符合条件可以无限循环
 2.while + break      #结束本层循环,手动停止while循环
 3.while + continue   #结束本次循环,从新开始循环
 4.while + else      #在while没有被主动打断的前提下,运行else 至结束
 5.while 嵌套 就是在 while 循环下子代码还有 while 循环代码

4.3 for 循环

 1#for循环和while循环基本类似,但是for更简单快捷
 for + 变量名(i,j,item)+ in + 可迭代对象 #可以是 字符串,列表,字典等
 ​
 namelist=[1,2,3,4,5,6,6]
 for i in namelist:       依次提取列表中内容使用
 ​
 for + range (起始位置,终止位置)  顾头不顾尾,可以产生多个元素的列表
 如:for i in range(0,10) 表示赋值给i,打印 i = 0 1 2 3 4 5 6 7 8 9
 ​
 range 在python中的区别:
 #   在python3中,为了节省内存,需要值的时候才给你,不需要就不给
  # 在python2中,直接生成一个列表,浪费内存
 #   xrange 等价于python3中的range()

4.3.1 for 循环组合

 1. for +break      # 结束本层循环
 2. for + continue    # 结束本次循环
 3. for + else  for     #循环没有主动结束的前提下,运行至else至结束
 4.for 嵌套:就是在 for 循环下的子代码,还有 for 循环代码

4.4 流程控制结构

 1.顺序结构   正常从上向下按照顺序的机构
 2.分支结构   有分支子代码,如: if判断子代码, while循环子代码等
 3.循环结构   while 循环 , for 循环
 4. # 代码缩进
 在python中代码缩进代表从属关系,一般是四个空格,同属关系缩进保持一致
 '''     ps: 遇到冒号,必缩进     '''

五:数据类型的内置方法

5.1整型 int

 1. int ()将括号内的数据转换成整型 #必须是纯数字
 number = int('20')

5.1.1 进制转换

 # print(bin(100))  # 将十进制的100转换成二进制对应的数    0b1100100
 # print(oct(100)) # 将十进制的100转换成八进制对应的数   0o144
 # print(hex(100)) # 将十进制的100转换成十六进制对应的数 0x64
 """
 0b开头表示二进制数
 0o开头表示八进制数
 0x开头表示十六进制数
 """
 # print(int('0b1100100',2)) # 100
 # print(int('0o144',8)) # 100
 # print(int('0x64',16)) # 100

5.2浮点型 float

 1.float ()将括号内数据转换成浮点类型,转换数据只能是纯数字和小数点数字
 number = float (1.5,20)

5.3字符串 str

 1. str ()  #  将括号内数据转换成字符串类型,可以转换任意类型
   # 优先掌握的操作:
 2. 按照索引取值: 正向取值, 反向取值,只能取值。
 [0]从左往右取值,[-1]从右往左取值
 ​
 3.切片取值:  顾头不顾尾 [0:8:3] (起始位置:终止位置:步长)
 print(name1[0:10:1])    # 从0开始,走到9,步长为1 支持负数(反向)-1
 ​
 4. format 取值:
  {}               #按位置取值
  {索引}              #按索引取值
  {name}               #按照key取值
  如:res='{} {} {}'.format('egon',18,'male')
 ​
 5. # .count 统计某个字符出现的次数,也可以当作value使用
 ​
 6. len()    # 统计字符串内字符个数   空格也算。
 ​
 7. # .strip() 移除首尾指定的字符
    strip()      移除首尾指定字符   #不指定默认空格
    lstrip()     移除左边指定字符   #不指定默认空格
    rstrip()     移除右边指定字符   #不指定默认空格
     
 8.  # .split   按照指定的字符切割成字符串,输出为列表类型
 ​
 split() 切割指定字符串,指定字符消失,输出为列表类型,可以控制切割次数
 rsplit()同上,从右开始切割。    
 如:name.rsplit('-',2)   ['jason-tony', 'egon', 'rock']  
 ​
 14.  # .join() 将列表多个元素拼接成字符串
 如:   res = ['jason','egon','kevin','tony']
 print('-'.join(res))      'jason-egon-kevin-tony'
 ​
 9.  # .upper , .lower , .isupper , .islower
   upper()    全部改为大写
   lower()    全部改为小写
   isupper()      判断是否全为大写
   islower()      判断是否全为小写
 ​
 10.  # .replace 字符串的替换
   replace('name','age',2)  
   0索引为需要被替换的, 1 索引 为替换成为的, 2 索引为替换次数  
 ​
 11. # .isdigit()   判断字符串是否为纯数字,   可以限制输入格式
 ​
 12. # title() 将字符串首字母全部改为大写
 ​
 13.  # .starwith()   .endswith()
  .starwith()        判断是以..开头
   .endswith()        判断是以..结尾
 ​

5.4 列表 list

 1. 类型转换  list   
    list()  #能被for循环的类型都能转换成 list 类型 str,list,dict
     list 1 = list(dic)     字典只有key能被转换
 2.  # 索引取值:
     list [6][1]  
 3.  # 切片取值:
    list [0:6:2]  索引默认 0 开始,也可以指定位数,设置步长
 ​
 4.  len ()  # 统计列表中元素的个数
 ​
 5. # .append() 末尾追加单个元素
   res.append('rock')   先增加,再打印,合为一步会报错
 ​
 6. # .insert() 根据索引增加元素
      res.insert(0,'alex')   前为索引,后为增加元素
     
 7.  # extend()     扩展列表
       将两个列表和为一个列表,等同于:append+for循环
 ​
 8. del  # 按照索引删除   无返回值
     del [2]  删除 2 号索引的元素
 9. # .remove()   指名道姓删除 无返回值
      res.remove('rock')  
 10. # .pop() 默认尾部弹出元素,也可以再括号内+索引弹出 有返回值
      res.pop(2)     list=res.pop(2) 拿到返回值
 ​
 11. # .clear()   清空列表
     list []  
 
 12. # .sort()   .revers() 排序
     升序          降序
 ​
 13. # .count()   统计列表中某个元素出现的次数
  l1.count('rock')
 ​

5.5 字典 dict

 # 定义:大括号括起来,内部存放多个元素,表现形式为 key :value 键值对形式  key是对value描述性信息,一般都是字符串,key只能是不可变类型(int,float,str)    value 可以是任意类型
 ​
 1. dict () 类型转换  dict 可以转换任意类型
     dic = dict(list)
 ​
 2.# 取值的两种方法 :
   dic.get('name')     and     dic['name']
  # 推荐使用           取值不推荐使用,不存在会报错
 ​
 3.# 添加元素
  d['name']='tony'      d['age'] = 18  
     内部有相同的key更新value,不存在key就新增键值对
 ​
 4. # 指定取值:.keys() .values() .items()
  .keys()       取字典内所有key值
   .values()      取字典内所有value值
  .items()         取字典内所有key:value键值对
 ​
 5. 删除:
    del ['name']    指定删除
    d.pop('name')   指定删除,有返回值
   d.popitem()      随机删除一个键值对,有返回值,返回值为tuple类型
                     一般默认删除最后一个
 6. # .setdefault() 可以理解为有key获取value值,无key新增键值对
     key值存在不修改,获取key对应的value值
     key值不存在,新建键值对('name',None)  可以设置为空
 ​
 7. # 创建字典的三种方式:
 第一:   dict({})
 第二:  dict (name = 'jason',  age = 18)
 第三:   dict([['name','jason']['pwd',123]['hobbied','read']])
 (1) d={}
  for k,v in l:
  d[k] = v
 print(d)  
   
 (2)   res = dict(l)                      
       print(res)  
 ​

5.6 元组 tuple

 元组定义:      元组 tuple 是不可变类型   
 小括号括起来,内部存放多个元素,元素之间逗号隔开,元素可以是任意类型
 # 元组类型只有单个元素时,需要+逗号
 设置元组 tuple 类型
 tuple 1 = tuple( list )
 ​

5.7 集合 set

 集合定义:   集合 set 类型
 大括号括起来,内存可以存放多个元素,内部只能是不可变类型
 如: # int float   str
 # 作用: 1.去重   2.关系运算
 '''
 集合内元素会自动去重,集合内元素为无序状态,关系运算就是比较两个群体之间的差异
 '''
  &  计算两个集合内重复的数据
  |  计算两个集合内所有的数据,重复只取一个
  -  计算两个集合的差异
  ^   计算两个集合不产生重叠的
 ​

六:可变类型与不可变类型

6.1可变类型

  #  列表 list  , 字典 dict  
     值改变,内存地址不变

6.2 不可变类型

 #  数字 int 字符串 str  元组 tuple
 值改变,内存地址一定变

七:队列与堆栈

 1.队列
 #   队列   先进先出
 2.堆栈
 # 堆栈 先进后出

八:数据类型总结

8.1 按存值个数区分

 # 标量/原子类型:          数字,字符串  
 ​
 #容器类型:             列表,元组,字典
 ​

8.2 按可变不可变区分

 #   可变类型:         列表,字典     
 ​
 #   不可变类型:       数字,字符串,元组    
 ​

8.3 按访问顺序区分

 #   直接访问:                数字       
 ​
 #   顺序访问(序列类型):     字符串,列表,元组              
 ​
 # key值访问(映射类型):       字典            
 ​

8.4 按存储空间占用区分

 #           数字
 #         字符串
 #       集合:无序,即无序存索引相关信息
 #     元组:有序,需要存索引相关信息,不可变
 #   列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
 # 字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改
 ​
 ​

九:字符编码

简介

 #  字符编码表 
 规定了人类的字符与数字之间的对应关系  # 字符编码的研究仅限于文本文件
 ​
 计算机基于电工作  而电信号只有高低电频两种状态
 # 高电频人为的定义为 1   低电频人为的定义为 0
 ​
 # 单位换算
 比特位bit(二进制的个数)
 8bit = 1bytes (字节)
 1024bytes = 1KB
 1024KB = 1MB
 1024MB = 1GB
 1024GB= 1TB
 1024TB = 1PB
 ​

字符编码发展史

 一家独大,计算机由美国人发明的  美国人需要计算机能够识别英文
 # ASCII码(字符编码表) 美国发明
 1bytes来表示所有的英文及符号
 8bit      256
 #   所有的英文字母及符号加起来也不会超过128种可能
 ​
 #中国发明了GBK码
 2bytes表示中文及符号   16bit    65535  
 1bytes表示所有英文及符号   #生僻字用更多bytes来表示
 ​
 #日本发明了shift_JIS码
 ​
 #韩国发明了Euc_kr码
 ​
 天下一统   # unicode w   兼容万国字符
 所有字符统一使用2bytes表示  不够再增加
 ​
 # UTF-8 unicode transformation format
 英文还是要哦那个1butes    中文改用 3bytes
 内存使用的编码表示unicode  硬盘用的是utf8
 ​
 #以后只用utf8编辑文本文件
 ​

字符编码实操

 1.解决文件乱码的核心
   # 文件以什么编码存的,就用什么编码取
 2.编码与解码(重要)
   #编码:   encode()
       将人类的字符按照指定的编码转换成计算机能够识别的数据类型
   #解码   decode()
     将计算机能识别的数据按照指定的编码转换成人类能够读懂的字符
 ​
 3.python解释器默认编码
  #python2默认的是ASCII码
     在python2种定义字符串在前面加一个字母   u
     文件头指定编码:   conding:utf8      name= u'jason'
  #python 3 默认的是utf-8
 ​
 ​
 ​

文件操作

 操作系统
  windows mac linux
 双击文件
  硬盘转 磁头读取数据
 保存文件
  硬盘转 磁头写入数据
 
 我们在操作文件的时候其实操作的是硬盘
 '''文件其实是操作系统暴露给我们可以简单快捷的操作硬盘的接口'''
 ​
 #绝对路径和相对路径
 绝对路径:非常详细的路径描述 , 无论什么人什么位置都可以找到
 相对路径:由一个参考    只有对应的人才可以找到
 ​
 在python上打开文本:
 res = open(r'a.txt','r',encoding='utf8')   #打开方式
 print(res.read())     #屏幕上显示
  res.close()    # 需要最后close关闭此文件        
 ​
     
     
     # 打开a.txt 使用变量名f指代改文件
 # with open(r'a.txt','r',encoding='utf8') as f:
 #     print(f.read()) # 读取文件内容
     # with子代码运行结束之后会自动调用close关闭文件资源
 # """
 # with open(文件路径,读写模式,编码格式) as 变量名:
 #     子代码块
 # 文件路径是必须的
 # 读写模式和编码格式是可选的
 # """
 ​
 ​
 # 如果不指定读写模式 那么默认使用r
 # 如果不指定编码格式 那么默认使用当前计算机内部默认编码
 """在中国所有的windows电脑内部默认的编码是gbk"""
 with open(r'a.txt') as f:
     print(f.read())  # 读取文件内容
 ​
 ​
 # 取消转义
 # res = r'D:\day08\a.txt'
 # res1 = r'D:\day08\n.txt'
 # res2 = r'D:\day08\t.txt'
 # print(res,res1,res2

十:python 3 和 python 2 的所有区别

 1.range 在python中的区别:
 #   在python3中,为了节省内存,需要值的时候才给你,不需要就不给
  # 在python2中,直接生成一个列表,浪费内存
 #   xrange 等价于python3中的range()
 ​
 ​
 input  #接受用户输入
  # python3 和 python2 的区别:
 python3中,用户输入任何值都存成字符串类型
 python2中,用户输入什么类型,就存成什么类型
 raw_input 和python3的 input 一样
 ​
 ​
 3.python解释器默认编码
  #python2默认的是ASCII码
     在python2种定义字符串在前面加一个字母   u
     文件头指定编码:   conding:utf8      name= u'jason'
  #python 3 默认的是utf-8  
 ​
 #首先在python3中操作文件只有一种选择,那就是open()
 ​
 #而在python2中则有两种方式:file()与open()
 ​
 ​



posted @ 2021-06-25 16:57  郝怕怕  阅读(207)  评论(0)    收藏  举报