资讯详情

python入门[中国大学mooc笔记][嵩天]

认真学习python

文章目录

  • python学习笔记
    • #by SN
    • 第0周 课程安排
    • 第1周 python基本语法元素
    • 第2周 python绘制基本图形
    • 第3周 基本数据类型
    • 第4周 基本数据类型
    • 第5周 复用函数和代码
    • 第6周 组合数据类型
    • 第7周 格式化文件和数据
    • 第8周 程序设计方法学
    • 第9周 python计算生态概览

python学习笔记

#by SN

第0周 课程安排

  1. python基本语法(温度转换)
  2. python基本图形绘制(蟒蛇绘制)
  3. 基本数据类型
  4. 程序控制结构(分支、循环、随机数)
  5. 函数和代码复用(递归)
  6. 组合数据类型(集合、序列、字典)。jieba分词,词频统计)
  7. 文件和数据类型(文件读写、词云)
  8. (进阶)程序设计方法学(自顶与自底,思维生态与体验,利用os库整理操作系统文件夹)
  9. python计算生态纵观

第1周 python基本语法元素

  1. 程序设计的基本方法

  2. python开发环境配置

  1. 例1:温度转换
#TempConvert.py#注释 Tempstr = input("输入带符号的温度值:")#从控制台获取字符串是字符串 if Tempstr[-1] in ["f","F"]:#判断输入是否为华氏温度     C = ( eval(Tempstr[0:-1]) - 32 ) / 1.8     print("转换后的温度为{:.2f}C".format(C))#到-1是指不包括尾巴,注意不包括尾巴 elif Tempstr[-1] in ["c", "C"]:##判断输入是否为摄氏温度     F = eval(Tempstr[0:-1]) * 1.8   32     print("转换后的温度是{:.2f}F".format(F))
else :#其他输入
    print("输入格式错误!")
  1. python语法元素分析
  • 程序的格式框架

    • 高亮不是语法

    • 缩进与多层缩进,,单一程序内缩进长度一样

    • 注释:单行用#,多行用```

  • 命名与保留字

    • 变量:用标识符表示,单一 = 表示赋值符号(命名规则:大小写敏感,首字母不为数字)

    • 保留字:编程语言内部定义保留使用的标识符 :if else in, True Fause None 是三个首字母大写的保留字

      • 33个保留字表:

      • and as assert break class continue
        def del elif else except finally
        for from False global if import
        in is lambda nonlocal not None
        or pass raise return try True
        while with yield
  • 数据类型

    • 数据类型:解释与理解的角度,类型就是与信息绑定的计算机唯一的理解形式
      • 字符串类型:一对引号囊括的字符序列(序列是可以索引或切片的,正向索引0,反向-1)
        • a[1]第二个字符,tempstr[0,-1]不包含最后一个字符的输入
      • 整数和实数(浮点数)
      • 列表类型:[]表示,中间元素用,隔开
        • 使用保留字in判断元素是否在列表中
          • Tempstr in [“c”,“C”] 返回True和Fause两种值
  • 语句与函数

    • 赋值语句:赋值同时赋类型
      • Tempstr = input(“请输入带有符号的温度值:”) # input()返回的是字符串类型,那么左边也是字符串类型
    • 分支语句:带判断
      • if elif else
      • 分支语句后必须要有 :
    • 函数:类似数学中的函数
      • f(x)
  • python程序的输入输出

    • eg:input(“请输入”)获取用户输入
    • eg:print(“输入错入”)做输出
      • print的格式化方法与槽{}
    • eg:eval():评估函数。去掉外侧引号,然后python解释该语句(可能是计算,可能是函数)
      • 作用就是字符串变为python语句

第2周 python基本图形绘制

  1. 深入理解python语言

    • 1946—1981—2008—2016
    • 机器语言:01字符串,二进制代码,CPU直接执行,也与CPU绑定
    • 汇编语言:只是机器语言的助记符版本,是一一对应的,也与具体CPU绑定
    • 高级语言:与CPU型号无关,依靠对应CPU的编译器或者解释器
      • c语言:指针,内存,数据类型 (性能)
      • java语言:面向对象,跨平台,运行时(软件类)
      • c++:对象,多态,继承(主客体本质,大规模程序)
      • VB:交互逻辑(桌面)
      • python:理解问题,较少底层,强制可读(所有专业,性能不再是首要考虑,生态高产)
    • 超级语言
  2. 实例2:python蟒蛇绘制

    #PythonDraw.py
    import turtle as t
    t.setup(650,350)#高650,宽350像素
    t.penup()
    t.fd(-250)#绝对行进就用goto()
    t.pendown()#penup()和pendown()是成对的
    t.pensize(30)
    t.pencolor("red")#字符串也可以,用元组,用三参数也可以
    t.seth(-40)#这是设置行进的绝对方向,相对方向用right()或left()
    for i in range(4):
        t.circle(40,80)
        t.circle(-40,80)
    t.circle(40,80/2)#r:以相对左侧r距离为圆心, 后面是圆心角大小(没给就是转一圈)
    t.fd(40)
    t.circle(16,180)
    t.fd(40* 2/3)
    t.done()#没有这一行绘图窗口会自动关闭
    
  3. 模块1:turtle库的使用

    • turtle库是标准库,随着解释器直接安装到操作系统,而第三方库需要自己安装
    • 库library,包package,模块module在本课统称为模块
    • RGB(红绿蓝)色彩体系
      • (255,255,255)为白色,(0,0,0)是黑色 (需要预先使用turtle.mode(255))
      • turtle.mode(1.0)则是使用三位0到1的小数
  4. 语法分析

    • 库引用

      • 使用import A 编写时使用 A.B© 此方法不会函数重名冲突
      • 使用from A import *,编写时使用 B.©、
      • 推荐 import turtle as t (t是库别名
    • 函数

      • pencolor()与pensize()

      • penup() pendown()成对提笔与落笔

      • fd()与circle()直走与弧形

      • setheading(angle)转向绝对角度,left()和right()相对角度

      • 循环语句与range函数

        • for in 保留字为循环结构

          for i in range(5):
              #range(M,N)返回M到N-1的序列
              print("Hello",i)#注意这个“,”连接打印效果为空格
              #print会自动换行,因为默认的end=“\n”,可以修改print("Hello",i,end="")不会提行
          

第3周 基本数据类型

  1. 数字类型以及操作

    • 整数,浮点(实数),复数

      • 整数

        pow(2,10)#1024
        1010,99,-217#十进制
        0b110,-0B1101#二进制
        0o175#八进制
        0xA24#十六进制
        
      • 浮点数

        #有精度10^-16^
        #注意***不确定尾数***的问题不是bug,0.1+0.2会等于0.30000000000002,这是因为计算机用53位二进制表示小数部分,这个就是精度来源,也就是说0.1+—10^-16^
        #0.1 + 0.2 == 0.3会返回False
        #round(0.1+0.2,1【1是指保留一位小数后四舍五入】)== 0.3会返回True,所以浮点数的比较需要用round函数
        #科学计数法 E-3
        
      • 复数(python独有)

        #j表示复数单位
        
    • 数值运算操作符

      x + y
      x - y
      x * y
      x / y  #10/3=3.3333333333,python里面整数直接除的结果是浮点数
      x // y#注意这是商的整数部分
      
      x % y #x mod y
      x ** y #pow(x,y) 10**0.5就是根号十
      注意python里面不同类型可以混合运算,结果取拓宽的类型(这里也可能产生不确定的尾数)
      
      二元赋值增强略
      
    • 数值运算函数

      abs(x)#绝对值
      divmod(x,y)#商余操作,返回序列 divmod(10,3)结果为(3,1)
      pow(x,y[,z])#(x ** y) % z #[]表示可以省略 #注意使用z的话可以略过可能计算机不能获取的巨大中间数得到目标,并且运算更快
      round(x[,d])#四舍五入取整函数,d是保留的小数位数,默认为0
      max(a,b,c,d……)#min也可以
      
      类型转换函数
      int(x)#注意这是函数,不是保留字,作用是将x变为整数,去掉小数部分
      ~int(123.45) = 123 int(“123”)=123
      float(x),complex(x)类似
      
  2. 实例3:天天向上的力量

    #daydayupQ4.py
    def dayUP(df):
        dayup = 1.0
        dayfactor = 0.01
        for i in range(365):#这就是计算思维,抽象自动化
            if i%7 in [6,0]:
                dayup *= (1-dayfactor)
            else:
                dayup *= (1+df)
        return dayup
    df = 0.01
    while dayUP(df) < 37.78:  #这是全年无休的进步#利用试错法,这是由于计算机强大的算力
        df += 0.001
    print("至少在工作日进步:{0:.3f}".format(df))
    
  3. 字符串

    • 字符串类型的表示

      • 字符的有序序列(有序就是可以索引)

      • "请输入温度:"#一对引号
        """python 语言"""#一对三引号
        #单引号也可以
        #注意一对三单引号就是字符串,但是这个字符串无关联的放在代码里可以看成多行注释
        #这种冗余是为了方便字符串内部的引号
        
      • 字符串的索引和切片

        顾头不顾尾

        #正向序号从0开始,逆向从-1开始
        索引:str[m]
        切片:str[m,n,step],三个参数都可以缺失,m缺失去表示到开头(等效于m=0),n缺失表示到结尾(注意:并不等效于n=-1),step默认为1
        

        ==技巧str[ : :-1]==表示逆序列

        而s[:-1]表示切去最后一个字符

        ==转义符反斜杠\==其后的字符真的只有字符本意,\".\n.\t.\b(这是光标回退)

    • 字符串操作符(三个)

      #x,y,s是字符串。n是整数。
      x + y #连接
      x * n #复制连接
      x in s #子串判断
      
    • 字符串处理函数

      #x是字符串,other是任意其他类型,i是整数,u是unicode编码
      len(x)#字符串长度 len("1235") = 4
      str(other)#强制类型转换,有点像eval(x)的逆函数
      hex(i)或oct(i)#返回整数对应的十六进制或八进制小写的字符串 hex(15)="0xf"
      	print(hex(20))
      
      chr(u)#编码变字符 chr(10004)返回“√” 而str(ord(“√”))=10004
      ord(x)#字符变编码
      #9803的巨蟹的编码
      

      unicode是python的编码,此编码几乎覆盖了所有字符文字,从0到1114111(0x10ffff),每个编码对应一个字符

    • 字符串的处理方法(八个)

      "ABC".lower()="abc"
      "abc".uper()="ABC"
      "a,bb,c".split(",")=["a","bb","c"]#是根据“,”分割,但是字符串本身要有“,”
      “my name is sn”.count("n")=2
      
      "my name is aaa".replace("aaa","sn")
      "hello".center(width[,fillchar])#"hello".center(9,"=") 是===hello===
      “===hello===”.strip(" =po")是"hell"
      ",".join("hello")是"h,e,l,l,o"#除了最后一个字符后都会有,,参加到
      

      .func()方法是面向对象的形式

    • 字符串的格式化操作

      • “hello”.format()
      #槽 {}表示,默认0,1,2……(可以不使用默认)对应后面的参数
      #槽内部还有参数来规定输出格式
      #前三个是字符串:填充(#=*),对齐(<^>)和宽度(20)(默认是空格填充,左对齐)
      "hello {0:=^7}".("world")是 hello =world=
      #后三个是数字相关 <,> (千位分隔符) <.2精度> <f类型>
      “{ 
                  0:,.3f}”.format(12345.6789)是123,45.679
      类型 整型:b是二进制  c是字符 d是十进制  x是十六进制 X是大写的十六进制  
      	浮点:e是科学计数法 f浮点  %是百分数
      
  4. time库的使用

    • 三类函数:时间获取,时间格式化,程序计时
    • 时间获取
    import time as ti
    print(ti.ctime())
    		==>Fri Mar 11 19:58:24 2022
    # (直接用time.time()返回的是浮点数(1970年1月1日开始),时间戳不易读)
    #gmtime()则是得到一个时间结构体(计算机可读),里面有年月日时分秒的域
    #time.struct_time(tm_year=2022, tm_mon=3, tm_mday=11, tm_hour=12, tm_min=2, tm_sec=41, tm_wday=4, tm_yday=70, tm_isdst=0)
    
    • 时间格式化

      ti.strftime("%Y-%m-%d %H:%M:%S",ti.gmtime())
      是2022-03-11 12:45:27
      格式化代号能被计算机用对应域替换
      反过来还有ti.strptime(“2022-03-11 12:45:27”,%Y-%m-%d %H:%M:%S)可以返回一个时间结构体
      
    • 程序计时

      perf_counter()返回一个精确(CPU级别)的时间计数值(起点未知),调用两次做差就可以算出时间,单位是秒
      start = ti.perf_counter()
      ...
      end = ti.perf_counter()
      
      ti.sleep(3)#休眠3.3秒
      
  5. 实例4:文本进度条

format里面{.2f}的.2f前一定要加:,应该是{:.2f}

进度条与程序计时

进度条先慢后快更符合人类需求

#textprobar3.py
import time as ti
scale = 50
print("执行开始".center(scale//2, "-"))
start = ti.perf_counter()
for i in range(scale + 1):
    a = "*" * i
    b = "." * (scale - i)
    c = (i/scale) * 100
    dur = ti.perf_counter() - start
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end = "")
    ti.sleep(0.1)
print("\n"+"执行结束".center(scale//2,"-"))

第4周 基本数据类型

  1. 程序的分支结构

  2. 实例5:身体质量指数BMI

    • BOdy Mass Index = kg/m2

    • 输入体重和身高(多个输入)&& 输出健康范围

      • a,b =1,2是可行的赋值办法 me,myf =“sn”,“szp”
      • 注意多分支条件之间的覆盖与分叉(这是程序逻辑问题)
      • 读程序先读分支
      #BMI.py
      height,weight = eval(input("请输入身高(m)与体重(kg)[请使用,隔开]"))
      bmi = weight / height**2
      print("BMI的数值为:{0:.2f}".format(bmi))
      who,nat ="","" #这是国际和国内两个标准
      if bmi < 18.5:
          who,nat = "偏瘦","偏瘦"
      elif 18.5 <= bmi < 24:
          who,nat = "正常","正常"
      elif 24 <= bmi < 25:
          who,nat = "正常","偏胖"
      elif 25 <= bmi < 28:
          who,nat = "偏胖","偏胖"
      elif 28 <= bmi < 30:
          who,nat = "偏胖","肥胖"
      else :
          who,nat = "肥胖","肥胖"
      print("您的BMI指标是:国际'{0}',国内'{1}'".format(who,nat))  
      
  3. 程序的循环结构

    • 遍历循环(遍历某一结构)

      • for i in 结构:

        #计数循环 利用range(N)产生序列结构
        for i in range(m,n,k):  [这个产生的就是切片一样的逻辑,顾头不顾尾]
        #其他结构体
        for c in "python123":  这就是遍历字符串,元素就是字符
        for item in ["1","python"]: 遍历序列
        for line in fi: 遍历文件的行
            只要是多个元素组成的结构都可以遍历
        
    • 无限循环(条件循环)

      • while condition:
      • ctrl + c 可以退出无限循环
    • 两个保留字:

      • break(打破内层循环结构,结束)
      • continue(结束当次循环,继续看条件是否需要继续循环,作用是跳过)
    • 与else扩展搭配,else作为正常完成循环(没有被break)的奖励

      • 类似之前有try的else奖励
  4. 模块3:random

    • 计算机利用种子经过梅森旋转来产生伪随机数

    • 种子相同,随机数相同

      random.seed(10)#设置种子为10,不调用就默认使用当前系统时间
      random.random()#生成一个[0.0,1.0)的小数,如果重置为10,继续调用random()结果不变,使用固定种子可以复现
      #扩展
      random.randint(a,b)#产生[a,b]之间的整数
      random.choice(seq)#随机选择序列里的一个元素
      random.shuffle(seq)#打乱序列并返回序列
      
  5. 实例6:圆周率计算

    • 蒙特卡罗方法:随机撒点概率法

      #culpi.py
      #数学方法 #使用 \ 换行的技巧
      pi = 0
      N = 100
      for i in range(N):
          pi += 1/pow(16,i)*(\
              4/(8*i+1) - 2/(8*i+4) -\
              1/(8*i+5) - 1/(8*i+6))
      print("圆周率是:{}".format(pi))
      #撒点(计算思维)
      import random as r
      import time as t
      darts = 1000*1000
      hits = 0.0
      start = t.perf_counter()
      
      for i in range(1,darts+1):
          x , y = r.random(),r.random()
          dist = pow(x**2+y**2, 0.5)
          if dist <= 1.0:
              hits += 1
      pi = 4*(hits/darts)
      print("圆周率是:{}".format(pi))
      print("运行的时间是:{:.5f}".format(t.perf_counter()-start))#主要就是花在了循环里
      

第5周 函数和代码复用

  1. 函数的定义与使用

    • 可选参数(定义时赋值)放在非可选技能后
    • 可变参数 也靠最后放*b,表示变量名是b的一个元组,也就是不确定数量的参数,max和min函数使用了*b
    • python 默认是位置传递,也可以名称传递
    • return 可以返回0个或任意多个返回值,多个值返回的就是元组,可以直接用,隔开的变量来接收元组的值
    • 注意函数内部的局部变量和程序的全局变量,函数使用完后局部变量会被回收,函数内部用global声明一下就可以使用全局变量
      • 但是全局组合数据类型可以直接在函数内部使用(使用不包含真实创建,也就是不包含[ ]),说白了组合数据类型是指针,而[ ]就是malloc
    • lambda函数,是函数的紧凑表达定义,略 f=lambda x,y: x+y
  2. 实例7 :七段数码管绘制

    #pipedraw.py
    import turtle as t
    import time as ti
    #定义单条线的是否绘制函数
    def drawGap():
        t.penup()
        t.fd(5)
    def drawLine(draw):
        drawGap()
        t.pendown() if draw else t.penup()
        t.fd(40)
        drawGap()
        t.right(90)
    def drawDigit(digit):
        drawLine(True) if digit in [2,3,4,5 

    标签: 集成电路sn74ls164n

    锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台