山东大学Python程序设计与大数据分析整理

Pytrhon语言概述

一、Python语言的诞生


  • 创始人:Guido van Rossum
  • Python 2.x : 2002年
  • Python 3.x :2008

语言特点:简洁,代码量少

二、Python语言的优势


  1. 脚本语言 + 语句执行
  2. 简洁 + 强制可读性
  3. 跨平台 + 开源
  4. 面向过程 + 面向对象
  5. 图形界面

三、Python语言特点


Python语言是

通用语言
脚本语言
开源语言
跨平台语言
多模型语言
胶水语言

IPO 程序编写方法


输入数据
处理数据
输出数据

Python程序实例解析

Python 语法元素分析

  • 严格缩进(4nbsp)表明格式框架

    标明代码的层次关系
    缩进是表明程序框架的唯一手段

  • 注释

    单行注释 #
    多行注释 “` 开头和结尾

  • 命名与保留字

    • 命名

    大小写字母、数字、下划线(_)、和汉字。==首字符不能是数字, 中间不能出现空格== 长度无限制
    ++大小写敏感++

变量 常量
程序中值不发生改变的元素 程序中值发生改变或者可以发生改变的元素
  • 保留字
    也称关键字,编程语言内部定义并保留使用的标识符
    编写程序不能定义与保留字相同的标识符
    保留字一般用来构成程序整体框架、表达关键值和具有结构性的复杂语义等
  • 字符串

    “ ” 或者 ’ ‘括起来的一个或多个字符
    两种序号体系

  • 赋值语句

    同步赋值语句:<变量1>, …, <变量N> = <表达式1>, …, <表达式N>

    t=x x=y  y=t  <=>   x,y = y,x 
  • input()函数

  • val = input("提示性文字")
    • 分支语句
     根据判断选择程序执行路径
     if condition1 :
        dosth
     elif condition2 :
      dosth
     ...
     else:
    • eval()函数
    以Python表达式的方式解析并执行字符串
    x = 1
    eval("X + 1")    结果为2
    eval("1.1 + 2.2")  -结果为3.3-
    
    • 输出函数
    通过%选择要输出的变量
    print("The average numbner is %f" % float_num)
    • 循环语句
    for i in range(num):
        do

    基本数据类型


    • 数字类型

      • 整数类型
      • 浮点数类型
      • 复数类型

         > 数字类型对Python语言中的数字表示和使用进行了定义和规范    
        
      • pow(x ,y) x^y
      • 科学计数法 98e4 53e-3 2.6E5 e或者E
      • 复数
        z = a + bj
        z.real   z.imag
    • 数字类型的操作
      混合类型运算 结果为最宽的类型
      基本规则:

      • 整数之间运算,如果数学意义上的结果是小数,结果是浮点数;
      • 整数之间运算,如果数学意义上的结果是整数,结果是整数;
      • 整数和浮点数混合运算,输出结果是浮点数;
      • 整数或浮点数与复数运算,输出结果是复数。

      整数 -> 浮点数 -> 复数

      • ==x // y== xy之间的整数商
      • ==+x== x本身
      • ==x**y== x的y次幂
    • 内置数字运算函数

    函数 描述
    abs(x) 绝对值
    divmod(x,y) (x//y, x%y) 二元组形式
    pow(x,y[,z]) (x**y)%z    []参数可以省略
    round(x[,ndigits) x四舍五入,保留ndigits位小数 返回四舍五入的整数值
    max(x1,x2,……,xn) 最大值,n无限制
    min(x1,x2,……,xn) 最小值,n无限制

    - 数字类类型转换

    函数 描述
    int(x) x(字符串,浮点数)转换为整数
    float(x) x(字符串,整数) 转换为浮点数
    complex(re[,im]) 生成实数 实部re(int,float,string) 虚部im(int, float)

    - 数字类型的判断

    type(x)  返回x的类型,适用于所有  
    type(4.5)  结果:<calss 'float'>
    • ## 字符串类型
    • 转义符

      \ 输出带引号的字符串
      \\ 带有转义符的字符串
      \n 换行

    • 索引 (正,反)
      [<索引>]    [0 ,len-1]
      [:]   不包括end
    • 字符串连接
      ”+” 拼接
      “*” 本身字符串重复连接形成

      3 * "pine" = 'pinepinepine'
    • 字符串长度len()

      len("pine") 结果:4
    • 字符串类型转换

      str(123) 结果'123'
    • 字符串字符遍历

      for chr in string:
      do
    操作 含义
    + 连接
    * 重复
    [] 索引
    [:] 剪切
    len() 长度
    .upper() 大写
    .lower() 小写
    .strip() 去两边空格和指定字符
    .split() 指定字符分割为数组
    .join() 连接两个字符串
    .find() 搜索指定字符串
    .replace() 字符串替换
    for in 迭代
    • 字符串类型格式化

      format()
      <模版字符串>.format(<逗号分隔的参数>)
      
      Example:
      "{}: 计算机{}cpu占用率为{}%".format("2016","Python",10)
      
      默认{}顺序对应参数顺序 也可以指定顺序
       "{1}: 计算机{0}cpu占用率为{2}%".format("Python","2016”,10)
      

      {<参数序号>:<格式控制标记>}

    <填充> <对齐> <宽度> <.精度> <类型>
    引导符号 填充的单个字符 < 左对齐 ^ 居中对齐 > 右对齐 设定输出宽度 千位分隔符 浮点数小数点精度 字符串输出最大长度 整数类型 b,c,d,o,x,X 浮点数类型e,E,f,%

    程序的控制结构

    程序的基本结构

    • 顺序结构
      程序的基础
    • 分支结构
      单分支   二分支(组合成多分支)
      if      if-else    if-elif-else
    • 循环结构
      条件循环  遍历循环
    <表达式1> if <条件> else <表达式2>
    count = 2
    count if count != 0 else "不存在"
    for i in range(N):
        do  
    for line in fi:
        do  
    for chr in string:
        do
    for item in lsL
        do
    
    for s in "BIT":
        print("execute" + s)
    else:
        s = "normal complete"
    print(s)
    #在for正常执行后,继续执行else中的内容。else只在循环正常执行之后才执行并结婚
    • ##### 无限循环 while语句

      一直保持循环操作知道特定循环条件不被满足才结束,不需要提前知道确定循环次数

    • ##### while else结构
      • while 和 for 的 else仅在循环全部正常遍历后才执行(没有break或者return退出,continue可以)
    • break and continue

      break跳出最内层的for或while循环
      continue跳过循环中下面的语句,不出循环

    • 异常处理

    try:  
        num = eval(input("输入一个整数")
        print(num**2)  
    except NameError:
        print("输入错误,非整数")

    可支持多个except,except不指定类型则处理所有异常

    graph TD
    A[try]-->B{no excpetion}
    A[try]-->F{exception}
    F{exception}-->G[except]
    G[except]-->D[fianll]
    B-->C[else]
    C-->D[finally]

    函数和代码的复用

    • 函数的基本使用
      • 函数是一种功能抽象
      • 函数是一段具有特定功能的,可重复的语句组,用函数名表示并通过函数名完成功能调用
      • 具有名字的子程序,无须重复编写
        -不同的参数输入实现对不同的数据的处理
      • 执行后反馈处理结果

    def <funcname>(<param_list>):
        <body>
        return <return_list>
    • 匿名函数———lambda函数
    <funcname> = lambda<param_list>:<expresion>
    等价于
    def <funcname>(<param_list>):
        return <expression>
    • 可选参数和可变数量参数
      参数存在默认值,默认值也可以更改
      *实现可变数量参数
    • 参数的位置和名称传递
      调用时指定参数名称,使得参数顺序任意调整
    • 返回值
      return可以返回多个(元组类型) 也可以无return
    • 全局变量和局部变量
      局部变量在函数执行完成后将被释放
    >>>n = 1    #n是全局变量
    >>>def func(a, b):
            n = b     #这个n是在函数内存中新生成的局部变量,不是全局变量 
            return a*b
    >>>s = func("knock~", 2)
    >>>print(s, n)  #测试一下n值是否改变
    knock~knock~ 1
    global 显示声明全局变量
    >>>n = 1    #n是全局变量
    >>>def func(a, b):
            global n
            n = b     #将局部变量b赋值给全局变量n 
            return a*b
    >>>s = func("knock~", 2)
    >>>print(s, n)  #测试一下n值是否改变
    knock~knock~ 2
    • 代码复用和模块化设计
      块内紧耦合,块间松耦合
    • 递归函数
      存在一个或多个基例,必须要以一个或多个基例结尾

    组合数据类型

    • 组合数据类型概述

      • 序列类型(string tuple list))

        先后关系,序号访问,不排他

      • 集合类型 (set)

        无序,互异

      • 映射类型(map)

        键值对

    • 列表类型

    >>>ls = [425, "BIT", [10, "CS"], 425]
    >>>ls
    [425, 'BIT', [10, 'CS'], 425]

    简单的列表赋值不会产生新的对象,而是有一个指针

    函数或方法 描述
    ls[i]=x ls第i项替换为x
    ls[i:j] = lt lt替换ls中的第i到j项(不含j)
    ls[i:j:k] = lt lt替换i到j以k为步长的项
    del ls[i:j] 删除ls i 到 j 项
    del ls[i:j:k] 删除i 到j k为步长
    ls += lt 或 ls.extend(lt) lt增加到ls中
    ls *= n 更新ls 元素重复n次
    ls.append(x) ls最后增加一个x
    ls.clear() 删除所有元素
    ls.copy() 生成一个新列表 复制ls所有元素
    ls.insert(i,x) 在i位置插入x
    ls.pop(i) 弹出第i个
    ls.remove(x) 删除第一个出现的元素x
    ls.reverse(x) ls元素反转
    使用一个列表改变另一个列表的值时候 多增少减
    >>>vlist 
    [0, 1, 2, 'python', 4]
    >>>vlist[1:3]=["bit", "computer"] 
    >>>vlist 
    [0, 'bit', 'computer', 'python', 4]
    >>>vlist[1:3]=["new_bit", "new_computer", 123]
    >>>vlist
    [0, 'new_bit', 'new_computer', 123, 'python', 4]
    >>>vlist[1:3]=["fewer"]
    >>>vlist
    [0, 'fewer', 123, 'python', 4]
    
    • 字典类型 {}
      {<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>}
      • 访问
        <值> = <字典变量>[<键>]
    直接使用大括号{}可以创建一个空的字典,并通过中括号[]向其增加元素。
    >>>Dp={}
    >>>Dp['2^10']=1024
    >>>print(Dp)
    {'2^10': 1024}
    
    函数和方法 描述
    .keys() 返回所有键信息
    .values() 返回所有值信息
    .items() 返回所有键值对
    .get(,) 键存在则返回,否则返回默认值
    .pop(,) 键存在则返回并删除,否则返回莫认真
    .popitem() 随机取出一个键值对,元组(key,value)形式返回
    .cealr() 删除所有键值对
    del [] 删除某一个键值对
    in 判断键是否在字典中 True or False

    文件和数据格式化

    • 文件概述
      文件包括 文本文件二进制文件
    textFIle = open("filename","rt")  #文本文件
    textFIle = open("filename","rb")  #二进制文件
    • 文件的打开关闭
    <变量名> = open(<文件名>,<打开模式>)  
    打开模式 含义
    ‘r’ 只读,不存在返回FileNotFoundError
    ‘w’ 覆盖写模式,不存在则创建
    ‘x’ 创建写模式,不存在创建,存在报错FileExistsError
    ‘a’ 追加写模式,不存在创建,存在追加
    ‘b’ 二进制模式
    ‘t’ 文本文件模式,默认
    ‘+’ 和rwxa一起使用,原功能基础上增加同时读写功能 E:w+

    - 文件内容读取

    方法 含义
    .readall() 读取整个文件内容,返回字符串或字节流
    .read(size=-1) 读入前size长度的字符串或字节流
    .readline(size=-1) 读入一行,或者该行前size长度
    .readlines(hint=-1) 读入所有行,或者hint行,每行为元素形成一个列表

    - 文件写

    方法 含义
    .write(s) 文件写入一个字符串或者字节流
    .writelines(lines) 元素为字符串的列表写入文件
    .seek(offset) 改变指针位置 0:开头 1:当前 2:结尾

    - CSV

    CSV文件的每一行是一维数据,可以使用Python中的列表类型表示,整个CSV文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表。

    [   
    ['城市', '环比', '同比', '定基\n'], 
    ['北京', '101.5', '120.7', '121.4\n'], 
    ['上海', '101.2', '127.3', '127.8\n'], 
    ['广州', '101.3', '119.4', '120.0\n'], 
    ['深圳', '102.0', '140.9', '145.5\n'],
    ['沈阳', '100.1', '101.4', '101.6\n'], 
    ]
    
    • JSON
      • 数据保存在键值对中;
      • 键值对之间由逗号分隔;
      • 括号用于保存键值对数据组成的对象;
      • 方括号用于保存键值对数据组成的数组。
    "本书作者" : [  
    {   "姓氏" : "嵩",
    "名字" : "天",
    "单位" : "北京理工大学"   }, 
    {   "姓氏" : "礼",
    "名字" : "欣",
    "单位" : "北京理工大学"   },
    {   "姓氏" : "黄",
    "名字" : "天羽",
    "单位" : "北京理工大学"   }  
    ]
    

    程序设计方法论

    • 自顶向下设计
    • 自底向上执行
    • 计算生态和模块编程

      模块编程思想是Python 语言最大的价值

    • Python第三方库的安装

      • pip工具安装

        最常用 最高效

      • 自定义安装

      • 文件安装

    pip install <拟安装库名>
    pip install -U <nane>
    pip uninstall <拟卸载库名>
    pip download <拟下载库名>
    pip search <拟查询关键字>
    pip list

    猜你喜欢

    转载自blog.csdn.net/Jemary_/article/details/80951964