特殊存储器SM0.1在用户程序运行时一直为1状态?

PLC的编程软元件实质上为存储器单元,每个单元都有唯一的地址。

为方便不同的编程功能需要,存储器单元作了分区,因此有不同类型的编程元件。软元件是PLC内部具有一定功能的器件,这些器件由电子电路和寄存器及存储器等单元组成;它是PLC内部的虚拟元件,没有物理器件,我们看不见,摸不着;它是PLC程序执行所需要的元件。

I(输入继电器) 、Q(输出继电器)、M(辅助继电器)、SM(特殊辅助继电器)、V(变量存储器)、L(局部变量存储器)、S(顺序控制继电器)、T(定时器)、C(计数器)、HC、AI(模拟量输入映像寄存器)、AQ(模拟量输出映像寄存器) 、AC(累加器)

输入继电器,也称为输入映像寄存器。在PLC的输入单元上,每一个数字量的输入点,对应着输入映像寄存器的一个位,主要用于接收外部开关信号。

PLC外部开关信号闭合时,输入继电器的线圈得电,在程序中其常开触点闭合,常闭触点断开。输入继电器触点在程序中可以不限次的使用。

输出继电器,也称为输出映像寄存器。在PLC的输出单元上,每一个数字量的输出点,对应着输出映像寄存器的一个位,主要用于驱动外部负载。

一个输出继电器只有一个与输出端子连接的常开触点(又称硬触点),而内部常开触点和常闭触点可以有很多个。

在PLC程序设计中,经常需要一些软中间继电器,主要是起到中间过渡或辅助作用。它的功能与传统继电器控制线路中的中间继电器相同。

S7-200提供的中间继电器的地址范围是:M0.0~M31.7,共256个,分为两类:

1、普通中间继电器(非断电保持型)(M0.0~M13.7),在PLC电源中断后,状态变为OFF。当电源恢复后,程序使其变为 ON外,其它仍保持OFF。

2、断电保持型中间继电器(M14.0~M31.7),在PLC电源中断后,它具有保持断电前的瞬间状态的功能,并在恢复供电后继续断电前的状态。

中间继电器线圈由程序指令驱动,每个中间继电器都有无限多对常开常闭触点,供编程使用。

它提供了CPU和用户程序之间传递信息的方法,可用于存储系统的状态变量、有关控制参数和信息等。用户可以使用这些位选择和控制CPU的一些特殊功能。

SM0.0 PLC处于RUN状态时,它始终为“1”或处于导通状态。

SM0.1 初始化脉冲。PLC开始运行时,SM0.1接通一个扫描周期。

SM0.5 该位提供时钟脉冲,该脉冲在1秒钟的周期时间内OFF(断开) 0.5秒,ON(接通)0.5秒。

变量存储器用来存储变量。它可以存放程序执行过程中控制逻辑操作的中间结果,也可以使用变量存储器来保存与工序或任务相关的其他数据。

局部变量存情器用来存放局部变量。局部变量与变量存储器所存情的全局变量十分相似,主要区别在于全局变量是全局有效的,而局部变量是局部有效的。

状态继电器又称顺序控制继电器,是编制顺序控制程序的重要器件,它通常与顺控指令同使用以实现顺序控制功能。

高速计数器。普通的计数器的计数频率受到扫描周期的影响,不能太高,而高速计数器可累计比CPU的扫描周期更快的事件,高速计数器一般运用于运动控制领域!

西门子S7-200 Smart系列PLC高速计数器最多6个,编号从HSC0~HSC5,其中“HSC”是高速计数器的标识符。

模拟量输入映像寄存器与模拟量输出映像寄存器。西门子S7-200 Smart系列PLC的CPU为模拟量信号输入端/输出端开辟的一个存储区。西门子S7-200 Smart系列PLC的模拟量输入映像寄存器与模拟量输出映像寄存器的地址是 AIW0 ~ AIW110;

AQW0 ~ AQW110,共56个字,其地址只能以字地址形式进行寻址,并且字地址只能是偶数。

注:模拟量输入值为只读数据,模拟量输出值为只写数据!

累加器是用来暂存数据的寄存器,它可以用来存放运算数据、中间数据和结果!西门子S7-200 Smart系列 PLC提供4个长度为32位的累加器,其地址范围是 AC0 ~ AC3,是可读写单元。

}



单片机以太网控制芯片W7100A数据手册(二)(/?p=4160)

}
  • python语言是一种高级动态、完全面向对象的语言。
  • python中函数、模块、数字、字符串都是对象。
  • python完全支持继承、重载、派生、多继承。

运行方式1:交互式运行python语句
运行方式2:保存源文件运行程序
交互式运行python语句

  • 语法高亮、代码检查、智能补全
  • 快速修复、project管理、单元测试、导航功能


  • 程序是写给人读的,编程规范。

python数据的对象以及组织
数据:是信息的表现形式和载体。对现实世界实体和概念的抽象。

注:数据类型之间几乎都是可以转换的。

1.无组织、标签式组织数据、队列、图、栈、树等。
2.对大量的数据进行处理的时候、需要建立各种各样的数据组织,以便提高计算效率。

1.计算:计算是对现实世界处理和过程的抽象。
2.数据对象:各种类型的数据对象,可以通过各种运算组织成复杂的表达式。
3.运算语句:将表达式赋值给变量进行引用;赋值语句用来实现处理与暂存。
4.控制流语句:控制流语句用来组织语句描述过程。(顺序结构、条件分支、循环)。
5.定义语句:定义语句也用来组织语句,把一系列运算语句集合起来给一个名字。描述一个包含一系列处理过程的计算单元,主要为了源代码的各种复用。python可以定义函数、类等代码对象。调用函数或类也可以得到数据对象,python里所有可调用的事物称为callable。

1.整数:int-最大特点是不限制大小(python3)
2.计算:.+、-、*、/、//(整数取余)、%(求余数)、m**n(m的n次方)、abs(m)(求绝对值)、divmod(m,n)(会得到两个整数,一个是m//n,一个是m%n)。
4.数的进制:十进制、二进制、八进制、十六进制 例:常用的十进制是0-9,十个不同的符号,逢十进一。
6.float浮点数类型:受到17位有效数字的限制。(避免相等判断)
7.复数类型(a+bj):.imag显示虚部,.real显示实部。复数不可以做大小比较。复数取模-abs。
8.数学函数模块:math函数-计算整数和浮点数。
9.数据函数模块:cmath函数-计算复数-平面直角坐标与极坐标转换。

1.逻辑类型(bool):仅包括真True或假False两个。
2.计算:与and(双目-同真为真)、或or(双目-有真为真)、非not(单目-真为假、假为真)
4.None:None=无意义、不知道、假、空值。

1.字符串:字符串就是把一个个文字的字符“串起来”的数据。
2.文字字符:文字字符包含拉丁字母、数字、标点符号、特殊符号,以及各种语言文字字符。
3.表示方法:用双引号或者单引号都可以表示字符串,但必须成对,多行字符串用三个连续单引号或多引号表示。
4.特殊字符:用转义符号“\”表示。

八进制数yy代表的字符
其它字符以普通格式输出

5.字符的编号:0(第一个).1.2…正向或-1(最后一个).-2.-3…负向,用这种整数编号可以从字符串中抽取任何一个字符。
6.字符串是数据本身。名字是数据的标签。名字和字符串是“名”和“值”之间的关系。字符串数值只能是字符串类型,名字则可以关联任意类型的数值。
7.常见的字符串操作

  • 获取字符串的长度:len函数
  • 加法(+):将两个字符串进行连接,得到新的字符串。
  • 乘法(*):将字符串重复若干次,生成新的字符串。
  • 判断字符串内容是否相同(==)。
  • 判断字符串是否包含某个字符串(in)。
  • str.strip:去掉字符串前后的所有空格,内部的空格不受影响。
    str.lstrip:去掉字符串前部(左部)的所有空格。 str.rstrip:去掉字符串后部(右部)的所有空格。 判断字母数字:
    str.isalpha:判断字符串是否全部由字母构成。 str.isdigit:判断字符串是否全部由数字构成。
    str.isalnum:判断字符串是否仅包含字母和数字。而不包含特殊字符。

8.序列(sequence):能够按照整数顺序排列的数据。
9.序列的内部结构:可以通过0开始的连续整数来索引单个对象。可以执行切片,获取序列的一部分。可以通过len函数来获取序列中包含多少元素。可以用加法“+”来连接为更长的序列。可以用乘法“*”来重复多次,成为更长的序列。可以用“in”来判断某个元素是否在序列中存在。

1.给数据命名:命名语法:<名字> = <数据> 命名规则 :字母和数字组合而成,下划线“_”算字母,字母区分大小写。不带特殊字符(如空格、标点、运算符等)。名字的第一个字符必须是字母,而不能是数字。在python3开始文字的命名规则中,汉字算字母。
2.名字:名字就像一个标签一样,通过赋值来“贴”在某个数据数值上。名字与数值的关联,称为引用。关联数值后的名字,就拥有了数据的值和类型。一个数值可以和多个名字关联。
3.变量:与数值关联的名字也称作变量,表示名字的值和类型可以随时变化。变量可以随时指向任何一个数据对象,变量的类型随着指向的数据对象类型改变而改变。
4.赋值:名字与数据对象关联的过程,称为给变量的赋值。“==”(相等关系)是对数值的相等性进行判断。“=”(赋值号)则是计算等号右边式子的值,赋值给等号左边的变量。
5.赋值语句:通过赋值号将变量和表达式左右相连的语句。


1.数据收纳盒:用来收纳数据对象的数据类型,以一种规则的下标索引方式(收纳盒名字+数据序号)访问到每个数据。这种收纳盒师是一种序列。
2.列表可以删除、添加、替换、重排序列中的元素(可变类型)。
3.创建列表:方括号法[]、指明类型法list()。

  • 增长列表:append操作-在列表末尾加上一个数据对象 。insert操作-在列表中间指定位置插入一个数据对象。 extend操作-把两个列表中一个列表接在另一个列表后面。
  • 缩减列表:pop操作-在列表中间指定位置提取并移除,无参数的pop默认移走最后一个。remove操作-根据列表中指定对象的值进行移除。clear操作-整个列表变成一个空列表。
  • 列表是一种可变容器,可随意增减。但兵说不定所有的数据容器都能像列表这样可以继续添加新元素。
  • 重新组织:reverse操作-把列表中的数据元素头尾反转重新排列。sort操作-把列表中的数据元素按照大小重新排列。reversed/sorted操作:得到对应重新排列的列表,而不影响原来的列表。
删除最后一个元素,并返回其值
删除第i个袁术,并返回其值
找到item的首次出现位置
返回item在列表中出现的次数
将item的首次出现删除

1.元组是不能再更新(不可变)序列。元组在保留列表大多数功能的同时,去掉了一些灵活性以换取更高的处理性能。
2.创建元组:圆括号法()、指明类型法tuple().
3.列表或元组中保存的各个数据称作元素,类型没有限制。

  • 合并:加法运算(+)-连接两个列表/元组。乘法运算(*)-复制n次,生成新列表/元组。
  • 列表/元组大小 len():列表/元组中元素的个数。
  • 索引:alist[n]或atupie[n]-求编号为n的元素。可以用赋值语句给列表中的任何一个位置重新赋值。但元组属于不可变类型,索引只能获取对应位置中的数据值,不可重新赋值。
  • 查找:in操作-判断某个元素是否存在于列表/元组中。index操作-指定的数据在列表/元组的哪个位置。count操作:指定的数据在列表/元组中出现过几次。
  • 计算:sum函数-将列表中所有的数据元素累加。min/max函数-返回列表中最小/最大的数据元素。

1.标签收纳盒:给数据贴上标签,就可以通过具有 特定含义的名字或者别的记号来获取数据。
2.通过标签(或者关键字)来索引数据,区别于列表或元组通过连续的整数来索引。
3.字典容器中保存着一些连的key-value对。通过键key来索引元素value。字典中的元素value没有任何顺序,可以是任意类型,甚至也可以是字典。字典的键值key可以是任意不可变类型(数值/字符串/元组)。
4.创建一个字典:花括号法和指明类型法
5.在字典中的每一项称为数据项,字典中保存的各个标签-数据值(key-value)。标签与数据值之间用冒号“:”连接。
7.字典是可变类型,可添加、删除、替换元素。

  • 合并字典:updata方法。
  • 增长字典:“关联”操作、updata操作-以key=value的形式批量添加数据项。
  • 缩减字典:del操作-删除指定标签的数据项。 pop操作-删除指定的数据项并返回数据项。 popitem操作-删除并返回任意一个数据项。 clear操作-清空字典

8.字典大小:len函数
9.标签索引:dict[key] 获取字典中指定标签的数据值。更新指定标签的数据项。get操作不是变量,不能更改。
10.获取字典的标签、数据值和数据项:keys函数-返回字典中所有标签。 values函数-返回字典中的所有数据值。 items函数-将每个数据项表示为二元元组,返回所有数据项。
11.在字典中查找:in操作-判断字典是否存在某个标签。in操作和values函数的组合-判断字典中是否存在某个数据值。

1.标签带:通过改造字典类型,去掉关联数据值,只留下标签的新容器类型。
2.集合是不重复元素的集合。
3.创建一个集合:{}或者set() 用set()创建空集、用set()从其他序列转换生成集合。
4.集合会自动忽略重复数据,集合中不能加入可变类型数据。
5.增长集合:add-添加一个数据。 update-批量添加数据。
6.缩减集合:remove/discard-删除指定数据。pop-删除任意数据并返回值。clear-清空集合。
7.集合大小:len函数
8.访问集合中的元素:in-判断元素是否属于集合。 pop-删除数据元素的同时,返回它的值取遍所有元素之后,集合成为一个空集。可以用copy操作先给集合做一个替身。

10.交集:isdisjoint():两集合交集是否为空。适用于快速去除重复的数据项。适用于判断元素是否在一组数据中,如果这些数据的次序不重要,使用集合可以获得比列表更好的性能。

1.列表:可以接长、拆短的积木式收纳盒。 元组:固定长短的收纳盒。
2.不可变类型:一旦创建就无法修改数据值的数据类型。(整数、浮点数、复数、逻辑值、元组、字符串)
3.可变类型:可以随时改变的数据类型。(列表、字典、集合)
4.灵活性强会花费一些计算或者存储的代价去维护这些强大的功能。
5. 变量引用特征:可变类型的变量操作需要注意,多个变量通过赋值引用同一个可变类型变量时,通过其中任何一个变量改变了可变类型对象,其它变量也随之改变。
1.用方括号[]创建的列表、用圆括号()创建元组、用花括号{}创建字典、每种类型中,都可以通过方括号[]对单个元素进行访问。
2.对于列表和元组,方括号里都是整型的偏移量。对于字典,方括号里是键。都能返回元素值。
3.将这些内置数据结构自由的组织成更大、更复杂的结构。创建自定义数据结构的过程中,唯一的限制来自于这些内置数据类型本身。

1.input函数:input(prompt)-显示提示信息prompt,由用户输入内容,input()返回值是字符串,通过int()函数将字符串类型强制转换为整型。
2.print函数:print([object,…][,sep=’’][,end=’\n’][,file=sys.stdout])-打印各变量值的输出。sep-表示变量之间用什么字符串隔开,缺省是空格。end-表示以这个字符串结尾,缺省为换行。file-指定了文本将要发送到的文件、标准流或其它类似的文件的对象,默认是sys.stdout(标准输出/终端输出)。
3.print函数-格式化字符串:print函数默认把对象打印到stdout流,并且添加了一些自动的格式化(可以自定义分隔符和行末符)。


1.“冯.诺伊曼结构”计算机:冯.诺伊曼-计算机之父。
2. 计算机硬件五大部件

  • 运算器:进行算术和逻辑运算。
  • 控制器:控制计算机持续协调运行。
  • 存储器:存储数据和逻辑。
  • 输入设备:从计算机外部获取数据。
  • 输出设备:将计算结果反馈给外界。

3.计算机内部运行过程-基本步骤
(1)控制器从存储器中取出程序语句和额外数据。
(2)数据齐全的语句交给运算器进行算术或者逻辑运算。
(3)运算结果再存回存储器。
(4)控制器确定下一条程序语句,回到步骤1继续。
python语言的赋值语句很好地对应了“运算”和“存储”。
赋值语句的执行语句语义为:计算表达式的值,存储起来,贴上变量标签以便将来引用。与计算机运行过程中的“计算”和“存储”相对应。
“控制器确定下一条程序语句”即对应“控制”。

1.控制流程:在计算机运行过程中,“下一条语句”决定了计算机是能够自动调整、自动反复操作,还是只能像计算器那样一步接着一步计算。这种决定“下一条语句”的机制,在程序设计语言中称作“控制流程”。
2.python语句中的控制流程

  • 顺序结构:按照语句队列前后顺序来确定下一条将要执行的语句。
  • 条件分支结构:根据当前情况选择下一条语句发位置。
  • 循环结构:周而复始地执行一系列语句。

3.简单类型与容器类型

  • 简单类型和容器类型之间的关系,就像玻璃珠与盒子、苹果与口袋
  • 容器类型是结构,将实体对象进行各种组织和编排。
数值类型、逻辑类型、字符串类型 列表、元组、字典、集合、子集
顺序结构、条件分支结构、循环结构

4.计算语句和结构语句:就像简单类型和容器类型之间的关系。用顺序、条件分支和循环结构,来对各个赋值语句进行编排,最终成为解决问题的程序。
1.条件分支:让程序有了判断力,根据计算机内部的情况(如变量值),来决定下一步做什么,这样的控制流程,就称为条件分支。根据预设条件来控制下一步该运行哪段语句。
2.基本要素:预设的判断条件、达成条件后执行的语句。
3.扩展要素:当体哦阿健不满足执行的语句、多条件时那个满足执行那个条件。

  • if和else都是“保留字”
  • “逻辑表达式”是指所有运算的结果为逻辑类型(True或False)的表达式。
  • “语句块”就是条件满足后执行的一组语句
  • 各种数据类型中某些值会自动转换为False,其它值则是True

2.多种情况的条件语句

  • 用else子语句进行判定
  • 使用elif语句进行判定

1.循环结构:让计算机执行冗长单调的重复性任务。根据需要对一系列操作进行设定次数或者设定条件的重复,这样的控制流程,就称作循环结构。作用-能持续对大量数据进行处理,在长时间里对一些未知的状况进行连续监测循环结构。
2.循环结构的基本要素

  • 循环前提和执行语句-在执行这组语句之前,计算机会检查循环前提是否存在,只要存在,就会反复执行这组语句,直到循环前提消失。
  • 循环前提的类型:(1)从某个容器或者潜在的数据集中逐一获取数据项,什么时候取不到数据项了,循环的前提就消失。(2)只要逻辑表达式计算结果为真(True),循环的前提就存在,什么时候逻辑表达式计算结果为假(False),循环的前提就消失了。

3.与条件分支结构的区别:循环结构会多次检查循环前提。
4.扩展要素:当循环前提消失,停止执行这组语句的时候,执行一次另一组语句。

  • 逻辑表达式:指所有运算的结果为逻辑类型(True或False)的表达式。

6.循环嵌套:双重或多重嵌套

  • 中断程序运行:CTRL+C
  • 通过修改程序中range函数的参数,还可以验证其它范围内的连续整数。
  • python语句中for语句实现了循环结构的第一种循环前提。

(2)可迭代对象表示从这个数据对象中可以逐个取出数据项赋值给“循环变量”。
(3)可迭代对象有很多 类型,如字符串、列表、元组、字典、集合等,也可以有后面提到的生成器、迭代器等。
返回一个从0开始到终点的数列
从0以外的任务整数开始构造数列
修改数列的步长,通过将步长设置为负数能够实现反向数列。
range构建的数列,包含起点整数,而不包含终点整数。
直接当作序列或转换为list或者tuple等容器类型。
嵌套循环中的跳出和继续

  • 都只能在循环内部使用。
  • 均作用于离它们最近的一层循环。
  • break是跳出当前循环并结束本层循环。
  • continue是略过余下循环语句并接着下一次循环。


2.给定y和m,计算y年m月有几天?-——注意闰年

3.给定字符串s和数字n,打印把字符串s向右移动n位的新字符串。例如:abcd和1,返回dabc。

4.给定一个英文数字字符串,打印相应阿拉伯数字字符串 例如:one-four-five-nine,返回1459。

代码组织:函数(def)

1.封装:容器是对数据的封装。函数是对语句的封装。类是对方法和属性的封装。
2.函数:程序中实现明确功能的代码段可以封装成一个函数,以便复用。
用del语句创建一个函数 ,用return关键字指定函数返回的值
5.局部变量:在函数内部定义的参数以及变量。只在该函数定义范围内有效,函数外边无法访问到
6.全局变量:在函数外部定义的,作用域是整个代码段。
7.global关键字:在哈桑农户内部使用与全局变量同名的变量时,若未在函数内进行定义,则使用全局变量的值。一旦在函数内部进行定义,python会在函数内部创建一个局部变量,与全局变量就不相关了。使用global关键字可以在函数中改变全局变量的值。
8.map函数:有时候需要对列表中每个元素做一个相同的处理,得到新列表。

函数func有几个参数,后面跟几个列表。
9.匿名函数lambda:有时候函数只使用一次,其名称也就不重要,可以无需飞身去def一个。
lambda表达式:返回一个匿名函数。

1.参数:传入到函数的值。当调用含参数的函数时,这些参数的值会被复制给函数中的对应参数。
2.形式参数:函数创建和定义过程中,函数名后面括号里的参数。
3.实际参数:函数在调用过程中传入的参数。
形式参数只是代表一个位置、一个变量名。实际参数是一个具体内容,赋值到变量的值。
4.定义函数的参数:定义函数时,参数可以有两种。
一种是在参数表中写明参数名key的参数,固定了顺序和数量的固定参数。

一种是定义时还不知道会有多少参数传入的可变参数。


一种是没有名字的位置参数

会按照前后顺序对应到函数参数传入
一种是带key的关键字参数

由于指定了key,可以不按照顺序对应。
如果混用,所有位置参数必须在前,关键字参数必须在后。

1.水仙花数的判定:创建一个函数,接受一个参数n(n>=100),判断这个数是否为水仙花数。结果返回True或False。
水仙花数:满足如果这个数为m位数,则每个位上的数字的m次幂之和等于它本身。
1.2创建一个函数,接受一个参数max(max>=1000),调用上题编写的判断函数,求100到max之间的水仙花数。

2.创建一个函数,接受两个字符串作为参数,返回两个字符串字符集合的并集。
例如:接受的两个字符串为“abc”和“bcd”,返回set([‘a’,‘b’,‘c’,‘d’])

1.模块就是程序:每一个扩展名为.py的python程序都是一个独立的模块。模块能定义函数、类和变量,让你能够有逻辑的组织你的python代码段。
2.组织结构:包是放在一个文件夹里的模块集合。

  • 将模块中的函数等名称导入当前程序。
  • 在调用模块中的函数的时候,需要加上模块的命名空间。
  • 可以给导入的命名空间替换一个新的名字。
  • 调用时不需要再加上命名空间。
  • 将模块中所有的名称都导入现在的空间,如math中不用math.pi,直接pi=π。但由于是模块内命名完全导入,可能与原空间命名重复、丢失。
动态类型创建和内置类型的名称
为高效循环创建迭代器的函数
可调用对象的高阶函数和操作
内部python对象序列化
与Unix“数据库”的接口
使用LZMA算法进行压缩
读取和写入tar归档文件
对XDR数据进行编码和解码
面向对象的文件系统路径
Unix样式路径名模式扩展
Unix文件名模式匹配
argparse 用于命令行选项,参数和子命令的解析器
用于命令行选项的c风格解析器
python的日志记录工具
curses 字符单元格显示的终端处理
访问底层平台的标识数据
标准errno系统符号
安全哈希和消息摘要算法接口
用于消息身份验证的密钥哈希算法
生成用于管理机密的安全随机数
套接字对象的TLS/SSL包装器
异步套接字命令/响应处理程序
设置异步事件的处理程序
电子邮件和MIME处理包
JSON编码器和解码器
将文件名映射到MIME类型
对binhex4文件进行编码和解码
在二进制和ASCII之间进行转换
对MIME引用的可打印数据进行编码和解码
对uuencode文件进行编码和解码
CGI脚本的回溯管理器
WSGI实现程序和参考实现
XMLRPC服务器和客户端模块
读取和写入Sun AU文件
访问兼容OSS的音频设备
支持面向行的命令解释器

5.命名空间:表示标识符的可见范围。一个标识符可以在多个命名空间中定义,在不同命名空间中的含义互不相干。

1.calendar模块:根日历相关的若干函数和类,可以生成文本形式的日历。

  • 返回某一年的某一个月份日历,是一个嵌套列表。
  • 最里层的列表含有七个元素,代表一周(从周一到周日)
  • 如果没有本月的日期,则为0。

普通闰年:能被4整除但不能被100整除的年份。
世纪闰年:能被400整除的年份。

5.计算某个月共有多少天,从周几开始

  • 从0开始,依次为周一、周二…
  • 返回0-6,依次对应的是周一到周日。

1.time.time方法:获得现在当前机器的时间,精度较高。
2.时间戳的用处:对程序运行多长时间进行计时。
4.将元组数据转化为日期

这一系列的数值分别对应年、月、日、时、分、秒、周几、一年中的第几天、是否为夏令时间。

5.利用索引获取时间信息:

6.索引获取时间信息:

7.让程序运行到某处便暂停

math模块支持浮点数运算。

cmath模块支持复数运算。
  • 尽管可以把浮点数转换为分数,在某些情况这么做会有不可避免的精度损失,因为这个数字在其最初的浮点形式上是不精确的。

计算机中的随机函数是按照一定算法模拟生成的,其结果是确定的,是可预见的。
随机种子相同,随机数的序列也是相同的。

1.临时性对象:类创建的对象并不是真正的数据库记录。存储在内存中而不是在文件中,关闭python,实例将消失。
2.对象持久化:对象在创建它们的程序退出之后依然存在。
3.标准库模块-对象持久化
pickle:任意python对象格式化和解格式化。
dbm:实现一个可通过键访问的文件系统,以存储字节串。
shelve:按照键把pickle处理后的对象存储到一个文件中。
提供基本的存储操作,通过构造一个简单的数据库,像操作字典一样按照键存储和获取本地的python对象,使其可以跨程序运行而保持持久化。其中键必须是字符串,且是唯一的。值可以是任何类型的python对象。
5.shelve与字典类型的区别:一开始必须打开shelve,并且在修改后需要关闭它。
6.数据处理:不支持类似SQL的查询工具。但只要通过键获取到保存在文件的对象,就可以像正常的数据对象一样处理。

  • 将任何数据对象,保存到文件中去
    open函数在调用时返回一个shelf对象,通过该对象可以存储内容。
  • 操作完成后,记得关闭文件。

1.普通文件:数据持久化的最简单类型。仅仅是在一个文件名下的字节流,把数据从文件读入内容,从内存写入文件。

  • mode:可选参数,打开模式和文件类别。
  • buffering:可选参数文件的缓冲区,默认为-1。

3.mode第一个字母表明对其的操作

  • ‘x’表示在文件不存在的情况下新创建并写文件。
  • ‘a’表示在文件末尾追加写内容。

4.mode第二个字母是文件类型

  • ‘b’表示二进制文件。

文件打开后要记得关闭,关闭的作用是终止对外部文件的连接,同时将缓存区的数据刷新到硬盘上。
使用上下文管理器:确保在退出后自动关闭文件

8.结构化文本文件:csv
1.纯文本文件,以“,”为分隔符

  • 值没有类型,所有值都是字符串。
  • 不能指定字体颜色等样式。
  • 不能指定单元格的宽高,不能合并单元格

接受一个可迭代对象(比如csv文件),能返回一个生成器,可以从其中解析出内容。

  • 但返回的每一个单元格都放在一个元组的组内。
  • 当文件不存在时,自动生成。
  • Workbook类是对工作簿的抽象。
  • Cell类是对单元格的抽象文件写操作。
    操作之前先导入第三方库
  • c.row:返回单元格所在的行坐标。
  • c.column:返回单元格所在列坐标。

6.结构化文本文件:PDF

  • 能进行读写、分割、合并、文件转换等多种操作。
  • 只能从PDF文档中提取文本并返回为字符串,而无法提取图像、图表或其他媒体。

1.阶乘累加(n=1~100)各需要多长时间。
2.将一篇文章写入一个文本文件。
3.读出文本文件,统计单词数输出
4.读出文本文件,随机输出其中的10个单词。

1.图形用户界面GUI:

  • GUI是人机交互的图形化界面设计,包括展示数据用的小控件、输入的方法、菜单、按钮以及窗口等。
  • 用户通过鼠标、键盘等输入设备操纵屏幕上的图标或菜单选项、来执行命令、调用文件、启动程序等日常任务。
  • 可以显示各种对话框、文本框、选择框与用户交互。
  • 消息窗口:easygui.mshbox()-显示一条消息和提供一个“ok”按钮。用户可以指定任意的消息和标题,甚至重写“ok”按钮的内容。
  • 按钮选项:easygui.choicebox()-为用户提供了一个可选择的列表,使用序列(元组或列表)作为选项。
  • 显示文本:easygui.textbox()-用于显示文本类容text参数可以是字符串、列表或者元组类型。
  • 打开文件:easygui.fileopenbox()-返回用户选择的文件名(带完整路径)Default参数指定了一个默认路径。

python内置,随时可以使用,其意象为模拟海龟在沙滩上爬行而留下的足迹。
内置模块,从logo语言借鉴而来。
位置、方向、画笔(颜色、线条宽度等)

  • 画笔运动命令:前/后移动、左/右移动、作画速度等
  • 画笔控制命令:抬起/放下、画笔宽度、画笔颜色、填充颜色等
    注意海龟作图次序:先画树干、再画右树枝、最后画左树枝:与递归函数里面的流程一致。
  • 分行的基本概念:部分与整体以某种方式相似的形体。
  • 分形学之父:数学家曼德勃罗。
  • Hibert 曲线:空间填充曲线,可以线性地贯穿二维或者更高维度的每个离散单元并进行排序和编码。可用于将高维空间中没有良好顺序的数据映射到一维空间。
  • 谢尔宾斯基三角形:由3个相同的谢尔宾斯基三角形按照品字形拼叠而成。面积为0,周长趋向于无穷大。我们只能画出维度(degree)有限的近似图形。

1.利用turtle模块,进行图形绘制
选择“正方形”,绘制一个边长100的绿色正方形。
选择“五角星”,绘制一个边长为100的红色五角星。

2.调用turtle模块画一颗树,包括枝干和树叶,并涂上颜色。

面向对象.什么是对象?

  • 万物皆对象,python中所有事物都是以对象形式存在、从简单的数值类型、到复杂的代码模块,都是对象。
  • 对象:即表示客观世界问题空间中的某个 具体事物,又表示软件系统解空间中的基本元素。
  • 对象 = 属性 +方法:对象以id作为标识,既包含数据(属性),也包含代码(方法),是某一类具体事物的特殊实例。

对象是类的实例,是程序的基本单元。
要创建一个新的对象,首先必须定义一个类,用以指明该类型的对象所包含的内容(属性和方法)。
同一类(class)的对象具有相同的属性和方法,但属性值和id不同。
赋值语句给予对象以名称,对象可以有多个名称(变量引用),但只有一个id。
对象实现了属性和方法的封装,是一种数据抽象机制。
提高了软件的重用性、灵活性、扩展性
可以跟一般的变量一样用在赋值语句和表达式中。
python语言动态的特征,使得对象可以随时增加或者删除属性或者方法。
面向对象编程(oop)是一种程序设计范型,同时也是一种程序开发方法。
程序中包含各种独立而又能互相调用对象每个对象都能接受、处理数据并将数据传递给其他对象。
将程序看作一系列函数或指令的集合。

1.类是对象的模板,封装了对应现实实体的性质和行为。实例对象是类的具体化。把类比作模具,对象则是用模具制造出来的零件。
2.类的出现,为面向对象编程的三个最重要的特性提供了实现的手段。

封装性、继承性、多态性
和函数相似,类是一系列代码的封装
python中约定,类名用大写字母开头,函数用小写字母开头,以便区分。
_ init _()是一个特殊的函数名,用于根据类的定义创建实例对象,第一个参数必须为self。
调用类会创建一个对象,(注意括号!)
类方法中的self指这个对象实例!
使用(.)操作符来调用对象里的方法。

也被称作魔术方法,在类定义中实现一些特殊方法,可以方便地使用python中一些内置操作。
所有特殊方法的名称以两个下划线(_)开始和结束。
对象的构造器,实例化对象时调用。

'''给文件对象进行包装从而确认在删除时文件流关闭'''

1.列表排序方法sort():对原列表进行排序,改变原序列内容。如果列表中的元素都是数字,默认升序排序。通过添加参数 reverse= True可改为降序排序。
如果元素都是字符串,则会按照字母表顺序排列。
2.通用函数sorted():类似sort(),但返回的是排好序的列表副本,原列表内容不变。
只有当列表中的所有元素都是统一类型的时候sort()和sorted()才会正常工作
由于python的可扩展性,每种数据类型可以定义特殊方法:
返回True视为比y“小”,排在前。
返回False视为比y“大”,排在后。
只要类定义中定义了特殊方法_ It _,任何自定义类都可以使用x<y这样的比较。

1.继承:如果一个类别A继承自另一个类别B,就把继承者A称为子类,被继承的类B称为父类、基类、或者超类。
2.代码复用:利用继承可以从已有类中衍生出新的类、添加或修改部分功能。新类具有旧类中的各种属性和方法,而不需要进行任何复制。

3.父类与子类定义:如果两个类具有“一般”-“特殊”的逻辑关系,那么特殊类就可以作为一般类的“子类”来定义,从“父类”继承属性和方法。
4.覆盖:子类对象可以调用父类方法,除非这个方法在子类中重新定义了。如果子类同名方法覆盖了父类的方法,仍然还可以调用父类的方法。
子类还可以添加父类中没有的方法和属性。

1.创建一个类People:包含属性name,city、可以转换为字符串形式(str)包含方法moveto(self,newcity)、可以按照city排序、创建4人对象,放到列表进行排序。
3.创建一个mylist类,集成自内置数据类型list(列表):增加一个方法“累乘”product、def product(self):返回所有数据项的乘积。

针对不同异常可以设置多个except。

如果try语句块运行时没有出现错误,会跳过except语句块执行finally语句块内容。

推导式是从一个或者多个迭代器快速简洁地创建数据结构的一种方法。
将循环和条件判断结合,从而避免语法冗长的代码。
可以用来生成列表、字典和集合。
4.与推导式一样的语法
返回一个生产器对象,也是可迭代对象。
但生成器并不立即产生全部元素,仅在要用到元素的时候才生成,可以极大节省内存。

除了通过生成器推导式创建生成器,还可以使用生成器函数。

1.生成器是用来创建数据序列一种对象。
2.使用它可以迭代庞大的序列,且不需要在内存中创建和存储整个序列
3.通常生成器是为迭代器产生数据的。
生成器是迭代器的一种实现。
1.如果要创建一个比较大的序列,生成器推导式将会比较复杂,一行表达式无法容纳,这时可以定义生成器函数。
2.生成器函数与普通函数:

  • 生成器函数的定义与普通函数相同,只是将return换成yield。
  • yield:立刻返回一个值,下一次迭代生成器函数时,从yield语句后的语句继续执行,直到再次yield返回,或终止。
    return:终止函数的执行,下次调用会重新执行函数。
    可以运行的独立函数调用,函数可以暂停或挂起,并在需要的时候从离开的地方继续或重新开始。
    例:函数even_number返回一个生成器对象。

两个数的商:输入两个数,输出它们的商,采用例外处理来处理两种错误,给出用户友好的提示信息
编写一个推导式,生成包含100以内所有勾股数(i,j,k)的列表。
编写一个生成器函数,能够生成斐波那契数列
斐波那契数列:由前两项数列得第三项。

Python里的图像处理库
功能强大,可以对图像做各种处理,包括缩放、裁剪、旋转、滤镜、文字、调色板等等。
(1)打开图像:image.open(<路径+图像名+文件格式>):Pillow库能自动根据文件内容确定格式,若图片在程序目录下,则不需要附带路径,直接将图像名+文件格式作为参数。
(2)处理图像:image模块中提供了大量处理图像的方法。
(3)存取或显示图像:
3.PIL图像操作:缩略图
thumbnail函数:thumbnail(size,Image.ANTIALIAS) 参数size为一个元组,指定生成缩略图的大小。直接对内存中的原图进行修改,但是修改后的图片需要保存,处理后的图片不会被拉伸。
4.小程序:PIL生成验证码

web应用已经成为目前最热门的应用软件形式。
web应用通过web服务器提供服务,客户端采用浏览器或者尊徐HTTP协议的客户端。
用于需要处理HTTP传输协议,很多web开发框架涌现。
web服务器会处理与浏览器客户端交互的HTTP协议具体细节,但对具体内容的处理还需要自己编写代码。一个web框架至少要具备处理浏览器客户端请求和服务器响应能力。

  • 路由:解析URL并找到对应的服务端文件或者Python服务器代码。
  • 模块:把服务端数据合并成HTML页面。
  • 认证和授权:处理用户名、密码和权限。
  • Session:处理用户在多次请求之间需要存储的数据。
    框架可能具备这些特性中的一个或多种。

4.Flask是一种非常容易上手的python web开发框架。功能非常强大,支持很多专业web开发需要的扩展功能。例如:Facebook认证和数据库集成。只需要具备基本的Python开发技能,就可以开发出一个web应用出来。
一个web服务器测试:

爬虫是按照一定的规则,自动地提取并保存网页中信息的程序。
蜘蛛沿着网络抓取猎物,通过一个节点之后,顺着该节点的连线继续爬行到下一个节点,最终爬完整个网络的全部节点。
通过向网站发起请求获取资源,提取其中有用的信息。
Python实现的一个简单易用的HTTP库。支持HTTP持久连接和连接池、SSL证书验证、cookies处理、流式上传等。
向服务器发起请求并获取响应,完成访问网页的步骤。
简洁、容易理解,是最友好的网络爬虫库。
包含服务器返回的所有信息,l如状态码、编码形式、文本内容等:也包含请求的request信息。
.text:HTTP响应内容的二进制形式。
requests的请求接口有一个名为headers的参数,向它传递一个字典来完成请求头定制。
一些网站设置了同一IP访问次数的限制,可以在发送请求时指定proxies参数来替换代理,解决这一问题。

    使用requests库下载了网页并转换成字符串后,需要一个解析器来处理HTML和XML,解析页面格式,提取有用的信息。
Pythond 内置标准库、文档容错能力强
Pythond 内置标准库、文档容错能力强
速度快、唯一支持xml的解析器
最好的容错性、以浏览器的方式解析文档

返回文档中符合条件的所有tag,是一个列表。

name:对标签名称的检索字符串。
attrs:对标签属性值的检索字符串。
recursive:是否对子节点全部检索,默认为True。
**kwargs:关键词参数列表。

  • 爬取网页:通过requests库向目标站点发送请求,若对方服务器正常响应,能够收到一个response对象,它包含了服务器返回的所有信息。
  • 解析页面:HTML代码-网页解析器。Json数据-json模块,转换Json对象。
  • 二进制数据-以wb形式写入文件,再做进一步处理此处使用bs4进行解析。

numpy是python用于处理大型矩阵的一个速度极快的数学库。可以做向量和矩阵的运算,包括各种创建矩阵的方法,以及一般的矩阵运算、求逆、求转置。
它的很多底层的函数都是用c写的,可以得到普通python中无法达到的运行速度。

    np.shape:数组形状,矩阵则为n行m列。
    np.size:对象元素的个数。

matplotlib是python的一个绘图库。它包含了大量的工具,可以使用这些工具创建各种图形。
python科学计算社区经常使用它完成数据可视化的工作。
4.绘制函数图像基本思路

    通过将图像上一些点的坐标连接起来,即可绘制函数的近似图像,当点越多时,所绘图像接近函数图像。 生成一个存放等差数列的数组,数组元素为浮点型,脑哈姆三个参数,分别是:数列起始值、终止值(默认包含自身)、数列元素个数。 可以设定图形颜色、线条线型、以及做标注等。

plot()函数的绘制样式参数表示。

}

我要回帖

更多关于 m是哪个存储器标识 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信