Python学习笔记

Python两种编程方式

  • 交互式:对每个输入语句及时运行结果,适合语法练习
  • 文件式:批量性hi性一组语句并运行结果,是编程的主要方式

Windows开发环境配置

  • 解释器下载地址:IDLE安装教程
  • 编辑器Pycharm:下载地址安装教程注册码
  • 使用实例---温度转换
    • image
    • 代码
        TempStr = input("请输入带有符号的温度值:")
        if TempStr[-1] in ['F','f']:
           C = (eval(TempStr[0:-1]) - 32)/1.8
           print("转换后的温度是{:.2f}C".format(C))
        elif TempStr[-1] in ['C','c']:  
           F = 1.8 * eval(TempStr[0:-1]) + 32
           print("转换后的温度是{:.2f}F".format(F))
        else:
           print("输入格式错误")
      
    • 运行
      • IDLE中点击Run--Run modules
        image
      • Pycharm中
        image

语法元素

  • 缩进:表达程序的格式框架
    • 缩进是语法的一部分,缩进不正确程序运行错误
    • 是表达代码间包含和层次关系的唯一手段
    • 程序内一致即可,一般用4个空格或1个Tab键
  • 注释
    • #:单行注释
    • ```内容```:多行注释
  • 变量:保存和表示数据的占位符号
    • 命名规则
      • 大小写字母、数字、下划线和汉字等字符及组合
      • 首字符不是数字
      • 不能与保留字符相同
        image
      • 大小写敏感
    • =:为变量赋值
  • 数据类型
    • 数字类型
      • 整数:38、1
      • 浮点数:数学中的实数,带有小数部分
    • 字符串类型:由0个或多个字符组成的有序字符序列
      • 由一对单引号或一对双引号吧表示,如"100,10,100"
      • 字符串序号
        • 分为正向递增序号和反向递减序号
          image
      • 使用[]获取字符串中一个或多个字符
        • 索引:返回字符串中第m个字符,<字符串>[M],如TemStr[-1]
        • 切片:返回字符串中从M开始不到N的这样一段字符子串,<字符串>[M:N],如TemStr[0:-1]
    • 列表类型:由0个或多个数据组成的有序序列
      • 使用[]表示,中间由,分隔元素,如['F','f']
      • 使用in判断一个元素是否在列表中
  • 语句与函数
    • 赋值语句:用=来实现为变量赋值
    • 分支语句
      • ifelifelse构成
      • 每个分支语句最后都有一个::如果条件为真则执行冒号后语句
    • 函数:函数名()
      • 输入函数:input(),获得用户输入的信息,其中的中文只是提示信息不作为输入部分
      • 输出函数:print()
        • 输出格式化
          image
      • 评估函数:eval(),去掉参数最外侧引号并执行余下语句
        image

Python基本图形绘制

turtle库

  • 是turtle绘图体系的Python实现,Python语言的标准库之一
  • 原理:即海龟在画布上走过的轨迹形成了绘制的图形
  • 库引用:imprt turtle
  • 使用函数:库名.函数(函数参数)

turtle绘图窗体

  • 窗口最小单位是像素
  • 函数:turtle.setup(width,height,startx,starty)设置窗体大小及位置(不是必需的,其中的startx与starty是窗体左上角距屏幕左上角的位置)
    image

turtle坐标体系

  • 空间坐标:turtle.goto(x,y)绝对坐标
    image
  • 海龟坐标
    image
    • 前进:turtle.fd(d)
    • 后退:turtle.bk(d)
    • 以左侧某一点为圆心:turtle.circle(r半径,angle弧度)
      image
  • 角度坐标
    • turtle.seth(angle角度)改变海龟行进方向
    • image
  • 海龟角度
    • 向左行进方向:turtle.left(angle)
    • 向右行进方向:turtle.right(angle)

色彩体系

  • 采用RGB色彩模式
  • RGB每色取值范围0-255整数或0-1小数
  • 常用RGB色彩
    image
    image
  • turtle.colormode(mode)默认为小数值
    • 1.0:RGB小数值模式
    • 255:RGB整数值模式

画笔控制

  • 成对出现
  • turtle.penup():抬起画笔,海龟运行轨迹不在画布上形成图案
  • turtle.pendown():落下画笔,海龟爬行
  • turtle.pensize(width)或者turtle.width(wodth):画笔宽度,海龟的腰围
  • turtle.pencolor(color):画笔颜色,color为颜色字符串或者rgb值

运动控制函数

  • 控制海龟行进:走直线&走曲线
  • 走直线:turtle.fd(d)或者turtle.forward(d)向前行进
  • 走曲线:turtle.circle(r半径,extent弧度),r默认圆心在海龟左侧r距离的位置

循环语句

  • 按照一定次数循环执行一组语句
  • 格式
      for 变量 in range(函数名):
          被循环执行的语句
    
  • range()函数
    • range(N):0~N-1
    • range(M,N):M~N-1
    • range(M,N,K):M~N-1且以K为步长

实例分析

  • 绘制蟒蛇代码
      import turtle
    
      turtle.setup(650, 350, 200, 200) # 设置窗体大小
      turtle.penup()  # 抬起画笔
      turtle.fd(-250)  # 倒退
      turtle.pendown()  # 落下画笔开始画
      turtle.pensize(25)  # 设置画笔大小
      turtle.pencolor("purple")  # 设置画笔颜色
      turtle.seth(-40)  # 设置行进方向
      for i in range(4):  # 循环四次完成身子部分
          turtle.circle(40, 80)  # 先以40为半径画80度的圆
          turtle.circle(-40, 80)  # 再以方向的40为半径画80度的圆
      turtle.circle(40, 80 / 2)  # 以40为半径、40度的圆
      turtle.fd(40) # 行进40度 完成脖子部分
      turtle.circle(16, 180)  # 以16为半径、180度的圆
      turtle.fd(40 * 2 / 3)  # 行进 完成头部
      turtle.done()  # 需要自行操作才能关闭窗体
    
  • 运行截图
    image

基本数据类型

数字类型

  • 整数类型
    • 与数学中的整数一致,可正可负,没有取值范围限制
    • pow(x,y)函数:计算xy,想算多大算多大
    • 四种进制表示形式
      image
  • 浮点数类型
    • 带有小数点及小数的数字,取值范围:-10^308~10^308,精度数量级:10^-16
    • 运算存在不确定尾数,不是bug
    • round(x,d)函数:对x四舍五入,d为小数截取位数,浮点数间运算及比较用round()函数辅助
    • 浮点数的科学计数法
      • 使用eE作为幂的符号,以10为基数
      • <a>e<b>:a*10b
  • 复数类型
    • a+bj :a为实部,b为虚部,j=√-1

数值运算操作符

  • 操作符

    操作符及使用 描述
    x+y 加,x与y之和
    x-y 减,x与y之差
    x*y 乘,x与y之积
    x/y 除,x与y之商
    x//y 整数除,x与y之整数商
    +x x本身
    -y x的负值
    x%y 余数
    x**y 幂运算,x的y次幂
    x**y 当y是小数时,开方运算
  • 一些运算函数

    • abs(x):x的绝对值
    • divmod(x,y):商余,同时输出商和余数(x//y,x%y)
    • pow(x,y):幂运算
    • pow(x,y,z):幂余,(x**y)%z
    • round(x,d):对x取d位小数
    • max(x1,...,xn)
    • min(x1,...,xn)
    • int(x):将x变为整数
    • float(x):将x变为浮点数
    • complex(x):将x变为复数
  • 实例

    • 工作日模式每天努力到多少相当于365天模式每天1%的努力
    • 代码
      def dayUp(df):
          dayup = 1
          for i in range(365):
              if i % 7 in [6,0]:
                  dayup = dayup * (1-0.01)
              else:
                  dayup = dayup * (1+df)
          return dayup
      dayfactor = 0.01
      while dayUp(dayfactor) < 37.78:
          dayfactor +=0.001
      print("工作日的努力参数是:{:.3f}".format(dayfactor))
      
    • 结果:0.019

字符串类型

  • 表示方法
    image

  • 序号
    image

  • 切片使用
    image

  • 转义符\
    image

  • 字符串操作符
    image

  • 一些处理函数

    • len(x):返回字符串x的长度
    • str(x):任意类型x多对应的字符串形式
    • hex(x):整数x的十六进制小写形式字符串
    • oct(x):整数x的八进制小写形式字符串
    • chr(u):将Unicode编码返回对应字符串
    • ord(x):返回x对应的Unicode编码
  • 一些处理方法

    方法及使用 描述
    str.lower()或str.upper() 返回字符串的小写或大写形式
    str.split(sep=None) 返回一个列表,由str根据sep被分隔的部分组成
    str.count(sub) 返回子串sub在str中出现的次数
    str.replace(old,new) 所有old字串被替换为new
    str.center(width[,fillchar]) 字符串str根据宽度width居中,fillchar可选其为填充字符
    str.strip(chars) 从str中去掉其左侧和右侧chars中列出的字符
    str.join(iter) 在iter变量除最后元素外每个元素后增加一个str
  • 字符串的格式化

    • 使用.format()方法
    • { }
      image
      image
      image

Python处理时间

time库

  • 计算机时间的表达
  • 提供获取系统时间并格式化输出功能
  • 提供系统级精确计时功能,用于程序性能分析
  • 导入库:import time
  • 调用相关函数:time.b()

三类函数

  • 时间获取:
    • time():获取当前时间戳,即计算机内部时间值,是一个浮点数
    • ctime():获取当前时间并以可读方式表示,返回字符串
    • gmtime():表示为计算机可处理的时间格式
  • 时间格式化:
    • strftime(tpl,ts):tpl定义输出效果,ts为时间类型变量
    • strptime(str,tpl):str是字符串形式的时间值,tpl为定义的输出效果
  • 程序计时应用
    • perf_counter() :返回一个CPU级别的精确时间计数值,单位为秒
    • sleep(s):s为休眠的时间,单位是秒,可以是浮点数
  • 实例
    • 文本进度条:采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化
    • 代码
     import time
     scale = 50
     print("执行开始".center(scale//2,"-"))
     start = time.perf_counter()
     for i in range(scale+1):
         a = '*' * i # *显示的个数
         b = '.' * (scale - i) # .显示的个数
         c = (i/scale)*100 # 打印百分比
         dur = time.perf_counter() - start # 打印出所消耗时间
         print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="")
         time.sleep(0.1)
     print("\n"+"执行结束".center(scale//2,'-'))
    
    • 效果
      image

程序的控制结构

分支结构

  • 单分支:if 条件:
  • 二分支:if : else:
  • 多分支:if - elif - else
  • 异常处理
      try:
          语句1
      except:
          语句2
    
      try:
          语句1
      except:
          语句2
      else: # 不发生异常时执行
          语句3
      finally: # 一定执行
          语句4
    
  • 实例
    • 身体质量指数BMI:BMI=体重(kg)/身高^2(m2)
      image
    • 代码
     height,weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]:"))
     bmi = weight / pow(height,2)
     print("BMI数值为:{:.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))
    

循环结构

  • 遍历循环
      for <循环变量> in <遍历结构>:
          语句块
    
    • 计数循环:for i in range(N):
    • 列表遍历循环:for item in ls:ls为一个列表
    • 文件遍历循环:for line in fi:fi为文件标识符,遍历其每行,产生循环
  • 无限循环
      while <条件>:
          <语句块>
    

循环控制保留字

  • continue:结束当次循环
  • break:结束整个循环

Python使用随机数

random库

  • 导入:import random
  • 八个函数
    • 基本随机函数
      • seed(a):初始化给定的随机数种子,默认为系统当前时间
      • random():生成[0.0-1.0]之间的随机小数
    • 扩展随机函数
      • randint(a,b):生成一个[a,b]之间的整数
      • randrange(m,n,k):生成一个[m,n)之间以k为步长的随机整数
      • getrangbits(k):生成一个k比特长的随机整数
      • uniform(a,b):生成[a,b]之间的随机小数
      • choice(seq):从序列seq中随机选择一个元素
      • shuffle(seq):将序列seq中元素随机排列,返回打乱后的序列
posted @ 2019-02-16 18:38  20165330张羽昕  阅读(309)  评论(0编辑  收藏  举报