Python学习日志

输出不大于1000的斐波那契数列
#斐波那契数列(数的值等于前面两个数加起来)
a,b=0,1
while a<1000:
print(a,end=’,’)#end=,表示print最后是什么结束
a,b=b,a+b

#同切圆的绘制:
import turtle as t
t.pensize(2) #设置画笔size
t.circle(10) #画一个半径为10个像素的圆
t.circle(40) #画一个半径为40个像素的圆
t.circle(80) #画一个半径为80个像素的圆
t.circle(160) #画一个半径为160个像素的圆

#输出当前计算机的系统时间
from datetime import datetime as d
now =d.now()#获取当前的日期以及时间
print(now)
print(now.strftime("%x"))#输出其中的日期部分
print(now.strftime("%X"))#输出其中的时间部分

IPO程序编写方式:输入数据,处理数据,输出数据
输入:文件输入,网络输入,控制台输入,交互式界面输入,随机数据输入,内部参数输入,
输出:控制台输出,图形输出,文件输出,网络输出,操作系统内部输变量输出
处理:处理的方法叫做算法

理解问题的计算部分
分析问题,划分边界,划分问题的功能边界,设计算法,编写程序,调试测试,升级维护。

Python程序语法元素分析

1.采用严格的“缩进”,来表明程序的格式框架
2.注释:#,’’’ ‘’’(分别代表单行注释和多行注释)
3.允许使用大小写字母,数字,下划线,汉字等字符进行变量命名,名字首字符不可以是数字,中间不可以有空格,长度无限制,对大小写敏感,注意不可和保留字重复,如:for

字符串
文本在程序中已string类型来表示
用单引号或者双引号表示字符串
字符串是字符的序列
索引:正向递增序号索引(0开始即第一个字符),反向递减序号索引(-1开始表示最后一个)
区间访问:[n:M]不包含M

赋值语句:=

input()函数
从控制台获得用户输入,input()函数将用户在控制台输入的内容按字符串返回。

分支语句
if,elif,else

eval(<字符串>)函数
将输入的字符串转变成Python语句,执行并返回执行的结果
注意:eval(“hello”)会被解释成一个变量,若没有声明这个变量会报错。
eval("‘hello’")就是一个字符串

若用户希望输入数字,小数或者负数,可以采用:
eval(input())组合

print()函数:可以自行决定如何格式化输出

循环语句
while()
for i in range(range):

函数
实际编程中,一般将特定功能的的代码写在一个函数里,便于阅读与复用,也使得程序的模块化更好。
函数可以理解成对一组特定功能的封装。
def 函数名():

Python的模块编程思想
这种通过使用函数库并利用库中的函数进行编程的方法是Python语言最重要的特点,称为“模块编程”

import引用函数库的两种方式
import <库名>
程序可以调用库名中的所有函数,调用格式:
<库名>.<函数名>(<函数参数>)

from <库名> import <函数名,函数名,函数名。。。>
from <库名> import * #*是通配符,代表所有函数.
调用格式:<函数名>(<函数参数>)

turtle库语法元素分析

基本框架:小乌龟在坐标系中爬行,爬行的轨迹绘制成图像
刚刚开始绘制时,小海龟位于画布中央,即(0,0),行进方向为水平右方。

初始化函数:

setup(width,height,startx,starty)
width:窗口宽度,整数表示像素值,小数表示窗口宽度与屏幕的比例。
height:窗口高度,整数表示像素值,小数表示窗口高度与屏幕的比例。
startx:窗口左侧与屏幕左侧的像素距离,若果是None,窗口位于屏幕水平中央。
starty::窗口顶部与屏幕顶部的像素距离,若果是None,窗口位于屏幕垂直中央。

画笔控制函数:

  1. penup()和pendown()函数:分别表示抬起画笔和放下画笔。抬起画笔之后的移动画笔不会绘制形状。
  2. pensize()函数:设置画笔宽度,当无参数时返回当前画笔的宽度。
  3. pencolor(“colorstring”)或者pencolor((r,g,b))函数:设置画笔颜色,当无参数时返回当前画笔的颜色。

形状绘制函数:

  1. forward(distance),fd(distance)函数:控制画笔向当前行进方向前进一个距离,distance表示姓金的像素值,负数表示反方向前进。
  2. seth(to_angle),settheading(to_angle)函数:改变画笔绘制方向,to_angle:角度的整数值。角度坐标体系以正东方向为绝对0度,正西方向为绝对180度。
  3. circle(radius,extent=None)函数:绘制一个弧形,radius:弧形半径,正数时,半径在小乌龟的左侧,负数时,半径在小乌龟右侧。extent:弧形的角度,None时,绘制整个圆形。

函数的封装:

将绘制功能和初始化功能分开,将绘制功能用函数封装起来。

深入Python语言

基本数据类型:

3种数字类型的概念和使用以及在计算机中的表示方法:

  • 3种数据类型:整数,浮点数,复数。(分别对应数学里的整数,实数,复数)。
整数:
  • 整数的例子:1010,99,-217,0x9a,-0x89
  • 整数类型共有四种进制表示:十进制,二进制,八进制,十六进制。
  • 引导符:十进制(默认无引导符),二进制(0b或0B),八进制(0o或0O),十六进制(0x或0X)
  • 范围:理论上负无穷到正无穷,实际上受限于内存大小。
浮点数:
  • Python语言要求所有的浮点数必须带有小数部分,小数部分可以使0,为的是区分浮点数和整数。
  • 浮点数的例子:0.0,-77.,-2,17,3.1416,96e4,4.3e-3,9.6E5
  • 科学计数法使用字母e或者E作为幂的符号,以10为基数,含义:,4.3e-3=0.0043,9.6E5=960000.0
  • 浮点数的数值范围和小数精度受不同计算机系统限制,使用sys.float_info查看
  • 由于Python语言能够支持无限制且准确的整数计算,因此,若希望获得精度更高的计算结果,往往采用整数而不是直接采用浮点数。例如:计算a=3.131592653,b=1.234567898相乘,可以直接浮点数相乘,也可以去掉小数点整数相乘。使用整数表达浮点数的方法是高精度运算的基本方法之一。
  • 高精度浮点数运算类型:由标准库decimal提供Decimal类型。
  • 对于高精度科学计算以外的绝大多数运算,浮点数类型足够“可靠”,误差仅为0.0000000000000002
复数类型:
  • 复数可以看作是二元有序实数对(a,b),表示为a+bj,其中,a是实部;b是虚部。复数是实数在二维平面空间旋转的一种表示。
  • Python语言中,复数的虚部通过后缀J或者j来表示,例如:12.3+4j,-5.6+7j,1.23e-4+5.67e+89j
  • 复数类型的实部和虚部都是浮点数类型
  • 对于复数z,可以用z.real和z.imag分别获得实部和虚部。
数字类型的操作
  • 数值运算操作符:+,-, , ,/ ,//(整除),%(模运算),-x,+x,**(幂)
  • 三种数据类型之间存在一种逐渐扩展的关系:整数->浮点数->复数,整数可以看作无小数点的浮点数,浮点数可以看作虚部为0的复数。
  • 规则:
  1. 整数之间的运算,如数学意义上的结果为小数,结果为浮点数。
  2. 整数之间的运算,如数学意义上的结果为整数,结果为整数。
  3. 整数和浮点数混合运算,输出结果为浮点数。
  4. 整数或浮点数和复数运算 ,输出结果为复数。
  • 增强赋值操作符:+=,-=,*=,/=,//=,%=,**=
内置数值运算函数:

abs(x):x的绝对值
divmod(x,y):输出为二元组形式
pow(x,y,[z]):幂运算,中括号内的内容可以省略
round(x,[y]):对x四舍五入,y表示保留几位小数,可以省略。
max(x1,x2,…):最大值
min(x1,x2,…):最小值

内置的数字类型转换函数:

int(x)转为整数
float(x)转为浮点数
complex(re[,im])生成一个复数,re可以是整数浮点数字符串,im可以是整数和浮点数。

Python的标准数学库:

math库:
  • 不支持复数,只支持整数和浮点数。
  • 提供了4个数学常数,44个函数,包括16个数值表示函数,8个幂对数函数,16个三角对数函数,4个高等特殊函数。
  • 书本p71有具体的函数介绍。

字符串类型的概念和使用:

概念:
  • 字符串是字符的序列表示,可以用单引号,双引号,三引号表示字符串。
  • 两种序号体系:正:从0开始递增,表示第一个。负:从-1开始递减,表示最后一个。
  • 区间访问方式:[N:M]
  • 字符串以Unicode编码存储,因此,字符串的英文字符和中文字符都算作1字符。
基本的字符串操作符

x+y:连接字符串xy
x*n:复制n次x
x in s:如果x是s的子串返回True,否则返回False
str[i]:索引,返回第i个字符
str[N:M]:切片,返回N:M的子串,不包括M
还有各种特殊的反义字符。

内置的字符串处理函数:
  • len(x):返回字符串x的长度,也可以返回其他组合数据类型的元素个数
  • str(x):将任意类型x转化成字符串并返回
  • chr(x):返回Unicode编码x对应的单字符
  • ord(x):返回单字符表示的Unicode编码
  • hex(x):返回整数x对应十六进制数的小写形式字符串
  • oct(x):返回整数x对应八进制数的小写形式字符串
内置的字符串处理方法:
  • str.lower():返回字符串str的副本,全部字符小写
  • str.upper():返回字符串str的副本,全部字符大写
  • str.islower():当str全部字符都是小写时,返回True,否则返回False
  • str.isprintable():当str全部字符可以打印时时,返回True,否则返回False
  • str.isnumeric():当str全部字符都是数字时,返回True,否则返回False
  • str.isspace():当str全部字符都是空格时,返回True,否则返回False
  • str.endwith(suffix [,start[,end]]):当str以suffix结尾时,返回True,否则返回False,可以规定检测区域
  • str.startswith(prefix [,start[,end]]):当str以prefix开头时,返回True,否则返回False,可以规定检测区域
  • str.split(sep,maxsplit):返回一个列表,由str根据sep被分割的部分构成,maxsplit规定最高索引位,可以不写
  • str.count(sub,start,end):返回从start到end中sub出现的次数,默认是整一个str
  • str.replace(old,new,count):返回str的副本,将里面的old全部替换成new,若给出count代表前count个old被替换
  • str.center(width,fillchar):字符串居中函数,百度一下
  • str.strip(chars):返回str的副本,在其左侧和右侧去掉chars中列出的字符,若无chars返回原型
  • str.zfill(width):返回str的副本,长度为width,不足部分用0代替
  • str.format():返回字符串str的一种排版格式,书本p85开始。
  • str.join(iterable):返回一个新的字符串,由组合数据类型iterable变量的每一个元素组成,元素间用str间隔

程序的控制结构:

程序的分支结构:
  • 单分支结构:if 语句

  • 二分之结构:if else 语句

  • 多分支结构:if elif else 语句

程序的循环结构:
for语句:

for <循环变量> in <遍历结构>:
<语句块>
遍历结构:字符串,文件,组合数据类型,range()函数等
循环遍历的另一种扩展模式:
for <循环变量> in <遍历结构>:
<语句块>
else:
<语句块>
for正常运行结束后就会运行else里面的代码

无限循环 while

while <条件>:
<语句块>
循环遍历的另一种扩展模式:
while <条件>:
<语句块>
else:
<语句块>
while正常运行结束后就会运行else里面的代码

循环保留字:break和continue
  • 他们用来辅助控制循环的执行
  • break 用来跳出最内层的for或while循环,脱离该循环后程序从循环代码后继续运行
  • continue 结束本次,进行下一次
random库 的使用
  • Python内置的random库主要用于产生各种分布的伪随机数序列。
程序的异常处理:

异常处理:try-except
高级用法:
try:
except:
N个except:
最后:finally:

函数和代码的复用:

函数的基本使用:

函数的定义:
  • 函数是一段具有特定功能的,可重用的语句组,用函数名来表示并通过函数名进行功能调用。
  • 目的:降低编程难度和代码重用。
  • 语法形式:
    def <函数名> (<参数列表>):
    <函数体>
    return <返回值列表>
  • 函数调用的过程:
    • 调用程序在调用处暂停执行。
    • 在调用时将实参复制给函数的形参。
    • 执行函数体语句。
    • 函数调用结束给出返回值,程序回到调用前的位置继续执行
lambda函数:
  • lambda保留字,用来定义一种特殊的函数,匿名函数。
    <函数名> = lambda<参数列表>:<表达式>

  • 例如:f = lambda x,y:x+y
    f(1,2)

函数参数的传递:
可选参数和可变数量参数:
  • 可选参数
    定义函数时,如果某些参数存在默认值,即部分参数不一定需要在调用程序时输入,可以在定义时直接为这些参数指定默认值,这些参数必须在非可选参数的后面。
  • 可变数量参数
    通过在参数前增加(*)号实现。带有*号的参数必须在参数列表的最后,调用时这些参数会被当做一个元组类型传递到函数里。
参数位置和名称传递:
  • 函数调用时,实参默认按位置顺序传递给函数。
  • 但是在很多参数时,这种调用方式的可读性很差。
  • 因此提供了按照参数名称输入实参的方式。
函数的返回值:
  • return语句用来退出函数并将程序返回到函数被调用的位置继续执行。
  • return可以同时将0,1或者多个函数运算后的结果返回给函数被调用处的变量
  • 函数可以没有return
  • return返回多个值时以元祖类型保存
函数对变量的作用:

Python函数对变量的作用遵守如下原则:
(1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变。
(2)简单数据类型变量在用global声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变。
(3)对于组合数据类型变量的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以直接使用并修改全局变量的值。
(4)如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变。

datetime库的使用:

9个常用属性:

  • min
  • max
  • year
  • month
  • day
  • hour
  • minute
  • second
  • microsecond

3个常用方法:

  • isoformat()
  • isoweekday()
  • strftime(format)

首先要导入库
然后创建datetime对象(三种方法):dtaetime.now(),utcnow(),datetime()
具体看书本135
格式化控制符:
%Y 年份
%m 月份
%B 月名
%b 月名缩写
%d 日期
%A 星期
%a 星期缩写
%H 小时(24h制)
%M 分钟
%S 秒
%x 日期 月/日/年
%X 时间 时:分:秒

组合数据类型:

概述

组合数据类型的分类:

序列类型:字符串(str),元祖(tuple),列表(list)
集合类型:集合(set)
映射类型:字典(map)

序列类型:
  • 需要访问序列中某个特定值时,只需通过下标访问即可,如:要访问第二个元素,可通过s1访问。
  • 由于元素之间存在顺序关系,所以序列中可以存在数值相同但位置不同的元素。
  • 支持成员关系操作符(in),长度计算函数(len()),分片([ ]),元素本身也可以是序列类型。
  • 字符串可以看成是单一字符的有序组合,属于序列类型。
  • 元组是包含0个或多个数据项的不可变序列类型。
  • 列表是一个可以修改数据项的序列类型,使用最灵活。
  • 无论是哪种序列类型,都是相同的索引体系,都可以正向递增序号和反向递减序号。
  • 序列类型的通用操作符和函数:
    * x in s ----------------------------------------------若x是s的元素,返回True,否则返回False
    * x not in s ----------------------------------------若x不是s的元素,返回True,否则返回False
    * s + t ---------------------------------------------- 连接s和t
    * s*n 或 n*s ---------------------------------------将序列s复制n次
    * s [ i ] -----------------------------------------------索引
    * s [ i : j ] --------------------------------------------分片,返回i到j的子序列,不包含j
    * s [ i : j : k ] ---------------------------------------步骤分片,返回 i 到 j 以 k 为步长的子序列
    * len(s) ----------------------------------------------序列s的元数个数
    * min(s) ---------------------------------------------序列s中的最小元素
    * max(s) --------------------------------------------序列s中的最大元素
    * s.index(x, i, j) -----------------------------------序列s从 i 开始到 j 位置中第一次出现元素x的位置
    * s.count(x) ----------------------------------------序列s中出现x的总次数
元组(tuple)
  • 一旦创建就不可以修改

用途:

  • 固定数据项
  • 函数多返回值
    def func(x):
    return x,x**3
  • 多变量同步赋值
    a,b = “tiger”,“cat”
  • 循环遍历
    import math
    for x,y in ((1,0),(2,5),(3,8))
    print(math.hypot(x,y))
    声明一个元组:
    creature = “cat”,“dog”,“tiger”
    or
    creature = (“cat”,“dog”,“tiger”)
列表和列表的操作
  • 列表是有序序列,无长度限制。
  • 列表可以自有增删元素,使用灵活。
  • 可以采用标准的比较操作符(<,<=, ==, !=, >=, >),列表的比较实际上是单个数据项的逐个比较。
  • 声明:用中括号([ ])或者list()将元组或者字符串转化成列表。直接用list()返回一个空的列表。
  • 将列表赋值给另一个列表不会生成新的列表对象,只会对数据进行引用。
  • 当使用一个列表给另一个列表赋值时,遵循多增少减的原则,例如:
    vlist[ 1 : 3 ] = [“new_bit”,“new_computer” , “123” ],那么vlist就会增加元素。
    vlist[ 1 : 3 ] = [ “fewer” ],那么vlist就会减少元素。
  • 列表也可以通过for-in语句对其元素进行遍历。
集合类型:
  • 0个或多个的无序组合,没有索引和位置的概念,不能分片。
  • 元素不可重复元素
  • 元素可以动态删除或增加。
  • 元素类型:固定数据类型。判断元素是否是固定类型通过其是否能够进行哈希运算。
  • 声明:
    S= {424,“BIT”,(10,“cs”),424}
  • 使用集合类型能够用来过滤重复元素。
  • set(x)可以用于生成集合
  • 集合类型操作符:书本p158上表
  • 集合类型10个操作函数或方法p158下表
映射类型:
  • 每一个元素是一个键值对。
  • 元素之间是无序的。
  • 键值对 刻画了一个属性和它的值。
字典
  • 列表是存储和检索数据的有序序列。当访问列表中的元素时,是通过索引来访问的。很多应用程序需要更灵活的信息查找方式,例如,在检索学生信息时需要基于身份证查找,而不是信息存储的序号,这个时候就要使用键值对了。
  • 字典通过大括号({})建立建立模式:{<键>:<值>,<键>:<值>…}
  • 键值对之间没有顺序且不可重复。
  • 访问值模式:值 = 字典变量【键】
  • 常用函数和方法:书本p167

文件和数据格式化:

文件的使用:

文件概述:
  • 文件包括两种类型:文本文件和二进制文件。
  • 文本文件一般由单一特定编码组成。如UTF-8编码,内容容易统一展示和阅读,由于文本文件存在编码,因此,他也被看做是存储在磁盘上的长字符串。
  • 二进制文件直接由比特0和比特1组成,没有统一字符编码。应用于图片视频等。
  • 区别:是否有统一的字符串编码。
  • 二进制由于没有统一字符串编码,只能当做字节流,而不能看做字符串。
  • 无论文件是创建文文本文件还是二进制文件,都可以用文本文件方式和二进制文件方式打开,但是打开后操作不同。
文件的打开和关闭:
  • Python对文本文件和二进制文件采用统一的操作步骤:“打开------》操作------》关闭”
  • 通过open()函数打开一个文件。
  • 格式:《变量名》=open(《文件名》,《打开方式》)
  • 文件名就不做过多介绍,(相对路径/绝对路径)
  • 打开方式:
    • ‘r’-(只读模式,文件不存返回异常FileNotFoundError,默认值),
    • ‘w’-(覆盖写模式,文件不存在则创建,存在则完全覆盖),
    • ‘x’-(创建写模式,文件不存在则创建,存在则返回异常FiileExistsError),
    • ‘a’-(追加写模式,文件不存在则创建,存在则在文件最后追加内容),
    • ‘b’-(二进制文件模式),
    • ‘t’-(文本文件模式),
    • ‘+’-(与r/w/x/a一同使用,在原功能上增加同时读写功能)
  • 打开方式使用字符串方式表示。
  • r/w/x/a可以和b/t/+组合使用。
  • 文本使用结束后使用close()方法结束。
文件的读写:
读:
  • 文件打开之后,对打开方式的不同可以对文件进行相应的读写操作。
  • 文本文件方式打开时,读写按照字符串方式,采用计算机使用的指定编码。
  • 二进制文件方式打开时,读写按照字节流方式。
  • 文件内容读取方法:
    • 《file》.readall()-(读取整个文件内容,返回一个字符串或字节流)
    • 《file》.read(size=-1)-(从文件中读入整个文件内容,size表示读取的长度,默认全读)
    • 《file》.readline(size=-1)-(读入一行,若给出参数,表示读取一行的长度)
    • 《file》.readlines(hint=-1)-(读取所有行,以每行问元素形成一个列表,若果给出参数,表示读多少行)
写:
  • 《file》.write(s)-(向文件写入一个字符串或字节流)
  • 《file》.writelines(lines)-(将一个元素全为字符串的列表写入文件)
  • 《file》.seek(offset)-(改变当前文件操作指针的位置。offset的值:0表示文件开头,1表示当前位置,2表示文件结尾)

PIL库的使用:

  • 概述:PIL库是一个具有强大图像处理能力的第三方库,,支持图像存储,显示和处理,能够处理几乎所有的图片格式,可以完成图像的suofang,裁剪,叠加以及向图像添加线条,图像和和文字等操作。
  • 其主要实现图像归档和图像处理两方面功能需求。
  • 图像归档:对图像进行批处理,生成图像预览,图像格式化转换等。
  • 图像处理:图像基本处理,像素处理,颜色处理。
  • 根据功能不同产生了21一个子类。
  • 最常用的:Image,ImageFilter,ImageEnhance。
Image类:

导入:from PIL import Image
Image类的读取和创建方法:

  • Image.open(filename) ------ 根据参数加载图像文件。
  • Image.new(mode,size,color) ------ 根据给定参数创建一个新的图像。
  • Image.open(StringIO.StringIO(buffer)) ------ 从字符串中获取图像。
  • Image.frombytes(mode,size,data) ------ 根据像素点data创建图像。
  • Image.verify() ------ 对图像文件完整性进行检查,返回异常。
  • Image能读取序列类图像文件,包括GIF,FLI,FLC,TIFF等格式。open()方法打开一个图像时自动加载序列中的第一帧,使用seek()和tell()方法可以在不同帧之间移动。
  • Image.seek(frame) ------ 跳转并返回图像中的指定帧
  • Image.tell() ------ 返回当前帧的序号

Image类的常用属性:

  • Image.format ------ 标识图像格式或来源,若图像不是从文件读取,值为None。
  • Image.mode ------ 图像的色彩模式,“L”为灰度图像,“RGB”为真彩色图像,“CMYK”为出版图像
  • Image.size ------ 图像的宽度和高度,单位是像素(px),返回值是二元元组
  • Image.palette ------ 调色板属性,返回一个ImagePalette类型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值