疫情环境下的网络学习笔记 python 3.10

3.10

今日内容

  1. 循环之for循环
    1. 基本使用
    2. 循环套用
    3. break
    4. continue
    5. else
  2. 基本数据类型及内置方法
    1. 数字
    2. 字符串
    3. 列表
    4. 总结
      1. 存几个值
      2. 有序/无序
      3. 可变/不可变

昨日回顾

  1. 浅拷贝:只拷贝列表的第一层内存地址,不加区分。拷贝得到的新列表,无论读或写都关联在一起

  2. 深拷贝:列表中可能还嵌套列表,把所有的列表进行拷贝。区分可变类型/不可变类型,对不可变类型直接取原内存地址,对可变类型创造新地址。在读层面上仍在一起,在改操作上完全独立开

  3. 流程控制 while循环 :案例,登陆接口

    break,continue下面的同级代码不会执行

正课

for循环

为何要有for循环:理论上for循环能做的事情,while循环都可以做,之所以要有for循环,是因为for循环在循环取值(遍历)上比while更简洁

语法:

for 变量名 in 可迭代对象:
	代码1
	代码2

可迭代对象:列表,字典,字符串,元组,集合,可循环取值,range

使用案例

  • 案例1 列表循环取值

    for x in ['a','b',111]:
    	print(x)
    

    从列表中一个个取出值,直到取到最后一个值结束,循环次数取决于迭代对象的长度

  • 案例2 字典循环取值

    dic = {'k1':111,'k2':222,'k3':333}
    for x in dic:
        print(x,dic[x]) # 默认取出字典的 key,再利用dic[x] 取出value
    
  • 案例3 字符串循环取值

    msg = 'deimos'
    for x in msg:
    	print(x)  # 把字符串中每一个字符赋值给x,依次输出每一个字符
    
  • break,else,continue的使用与while循环一模一样

while与for的异同

  • 都是循环,for可以干的事情,while也可以干
  • while循环多少次取决于条件,for循环多少次取决于可迭代对象的长度
  • for相当于while循环使用count做条件
  • 终止for循环只有break一种方式

for循环嵌套

外层循环循环一次,需要内层循环全部执行完毕

  • 打印九九乘法表

    for i in range(1,10):
        for j in range(1,10):
            print(f'{i}*{j}={i*j}')
    

range()

需求:不用for来循环取值,只用for来让一段代码循环几次

使用range() 函数来创造一个可迭代对象

range(start,end,step)
#默认步长为1,起始点为0,要头不要尾

使用规则:

  • range(3):[0,1,2]

    print(list(range(0,3)))
    # 输出[0, 1, 2],从0开始,不输出3
    
  • 如果步长大于元素个数,则只输出第一个元素

    print(list(range(0,3,5)))
    # 输出[0]
    
  • 如果只输入一个参数,默认为end,两个参数,默认为start,end;输入三个参数,为start,end,step

    print(list(range(5,0)))
    # 5为start,0为end,输出空列表 []
    
  • 步长可以取 -1

  • len(list) 函数,返回列表的长度

python3与python2中的range

  • python3:能下鸡蛋的鸡:在内存中只占一个内存地址
  • python2:一筐鸡蛋:在内存中真的产生一个带有值的列表

print的一些方法

  • print(str,str) 用逗号分隔多个变量,输出的时候用一个空格分开
  • 换行符
  • end = '' 以什么字符结尾,默认以换行符结尾,填空字符串代表不用任何字符结尾

基本数据类型

int整型

  1. 定义:age = 10 背后实际上是 age = int(10)

    变量 = 名字(参数)

    触发一个功能的运行,会返回一个值,可以使用一个变量接着这个返回值,即将返回值赋值给变量

    可能有返回值,也可能没有返回值:int() 功能返回一个整型,print() 功能没有返回值

  2. 类型转化

    int() 对于纯数字的字符串,可以将其转换为int类型

    十进制,二进制。。。十六进制:

    • 十六进制中 10,11,12,13,14,15分别用a,b,c,d,e,f表示
    • 转换方法

    python提供的进制转换功能(了解)

    • bin(int) 10转2进制

      0b 开头代表二进制

    • oct() 10转8进制

      0o 代表八进制

    • hex() 10转16进制

      0xb 表示16进制

    • int('特殊进制数字',2),将二进制转为10进制

  3. 使用

    整型和浮点型没有内置方法

float浮点型

  1. 定义:salary = 1.1 ==> salary = float(1.1)

  2. 类型转换:float

    sala = 10
    print(float(sala))  # 输出 10.0
    
  3. python中还可以表示复数(complex)

str字符串类型

  1. 定义:name = ’deimos’,调用 str() 功能

  2. 类型转换:str(...) 把任意类型转成字符串

  3. 使用方法

    1. 按索引取值 str[index]

      python对于有序的类型都有索引的概念

      正向,索引从0开始,负向取从-1开始1

      只能读,不能改:str是不可变类型

    2. 切片str[start:end:step]

      从一个大字符串中拷贝出一个子字符串:原字符串没改(不可变)

      使用规则:要头不要尾,步长

      name = 'deimos_chen'
      res = name[0:8:2]  #从0号索引开始:d,步长为2,取到第8号索引前面
      print(res)
      #输出 dio_
      

      步长可以取负数,表示从后往前取值,要配合起点索引>终点索引来使用

      name = 'deimos_chen'
      res = name[10:0:-2]
      print(res)
      #输出 nh_oi
      

      如果不填参数

      str[::]
      #默认从起点取到终点,步长为1
      
    3. 成员运算 in / not in

      判断一个字字符串是否存在一个大字符串中

    4. 移除指定字符串左右两侧字符 strip()

      字符串不可变,所以不会改变原str,而是产生一个新的str

      • 不传入参数,则默认去除两侧空格

      • 传入str,则去除左右两侧特定的字符

        从str左边出发,依次比对其与传入参数的字符串是否有相等的字符,有则去除,遇到不在入参内的字符则停止。同样对右边执行依次

        name = '/*-++-9*-deimos_chen//*1/*++**'
        print(name.strip('/*-+'))
        #输出 9*-deimos_chen//*1
        
      • 应用:登陆接口

    5. 切分 str.split(str)

      把一个字符串按照某种分隔符进行切分,得到的子字符串存进一个列表

      • 默认分隔符是空格

      • 指定分割符

        name = 'deimos:aaa:bbbb'
        print(name.split(':'))
        #输出 ['deimos', 'aaa', 'bbbb'
        
      • 指定分割次数,后面的分隔符不管

        name = 'deimos:aaa:bbbb'
        print(name.split(':',1))
        #['deimos', 'aaa:bbbb']
        
    6. upper(),lower()

      • str.upper() 返回一个新str,将str的小写字母全换成大写

      • str.lower() 返回一个新str,将str的大写字母全换成小写

        name = 'deimos'
        print(name.upper())
        # 输出 DEIMOS
        
    7. str.startswith(),endswith()

      判断字符串是否以指定字符串开始或结尾,返回布尔值。注意starts,有s,英语语法

    8. str.format()

      字符串格式化输出

    9. str.join(list)

      以str作为分隔符,把元素全为字符串的列表拼接成一个大字符串,返回新的字符串,相当于

      list[0]+'str'+list[1]+'str'+list[2]
      
    10. .replace()

      str.replace(原字符串,要改变的字符串,改变次数)

      name = 'aabbccdd'
      print(name.replace('a','f',1))
      

      如果不加最后的次数,默认替换所有字符串

    11. str.isdigit()

      判断字符串是否是纯数字,返回布尔值

    12. 了解即可的操作

      str1.find(str2)  #查找子字符串在大字符串中的位置,返回子字符串在大字符串中的索引,找不到则返回-1
      str1.index(str2)  #与find类似,但是找不到则报错
      str.center(最终打印的宽度,符号)  #str居中显示,不够的宽度以符号填充
      str.ljust(最终打印的宽度,符号)  #居左显示
      str.rjust(最终打印的宽度,符号)  #居右显示
      str.zfill(显示宽度)  #右补零
      str.title()  #每个单词首字母大写
      

      is系列

      str.islower()  #是否全为小写
      str.isupper()  #是否全为大写
      str.istitle()  #是否首字母大写
      str.isalnum()  #是否字母+数字组成
      str.isalpha()  #是否全为字母
      str.isspace()  #是否全为空格
      

      数字系列

      str.isdigit()
      str.isnumberic()
      str.isdecimal()  #只能识别普通数字(Unicode)
      
  4. 有序 or 无序

原文地址:https://www.cnblogs.com/telecasterfanclub/p/12455954.html