山东大学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)  结果:
  • 字符串类型

  • 转义符

    \ 输出带引号的字符串
    \\ 带有转义符的字符串
    \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 ():
    
    return 
  • 匿名函数———lambda函数
 = lambda:
等价于
def ():
    return 
  • 可选参数和可变数量参数

    参数存在默认值,默认值也可以更改
    *实现可变数量参数

  • 参数的位置和名称传递

    调用时指定参数名称,使得参数顺序任意调整

  • 返回值

    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 
pip uninstall <拟卸载库名>
pip download <拟下载库名>
pip search <拟查询关键字>
pip list

你可能感兴趣的:(SDU,Exam&Review,Collection)