python基础语法
python引言
python
- python语言是一种高级动态、完全面向对象的语言。
- python中函数、模块、数字、字符串都是对象。
- python完全支持继承、重载、派生、多继承。
python程序
运行方式1:交互式运行python语句
运行方式2:保存源文件运行程序
交互式运行python语句
-
打开IDLE–科学计算器
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020092819524773.png#pic_r -
第一行程序代码编写
IDLE里编程步骤
1."File->New File"打开文件编译器窗口。
2.输入代码。
3.“File ->Save”保存文件。
4.“Run->Run Module”运行,查看结果。
pycharm
- 语法高亮、代码检查、智能补全
- 快速修复、project管理、单元测试、导航功能
- Tools->Python Console 调出命令行界面来执行单条语句。
简单IDLE联系
- 注意对齐与缩进
- 注意字母大小写、空格
- 注意左右括号的配对
上机练习 1.0
python语言介绍
python语言风格
- 优雅、明确、简单。
- 代码强制缩进。
- 程序是写给人读的,编程规范。
- python 哲学 import this
python数据的对象以及组织
数据:是信息的表现形式和载体。对现实世界实体和概念的抽象。
大数据:Volume、Velocity、Variety、Value、Veracity
python数据类型归纳
1.简单数据类型:int、float、complex(复数)、bool、str
2.容器类型用来组织这些值:list、tuple、set、dict
注:数据类型之间几乎都是可以转换的。
python组织方式
1.无组织、标签式组织数据、队列、图、栈、树等。
2.对大量的数据进行处理的时候、需要建立各种各样的数据组织,以便提高计算效率。
python计算和控制流
1.计算:计算是对现实世界处理和过程的抽象。
2.数据对象:各种类型的数据对象,可以通过各种运算组织成复杂的表达式。
3.运算语句:将表达式赋值给变量进行引用;赋值语句用来实现处理与暂存。
4.控制流语句:控制流语句用来组织语句描述过程。(顺序结构、条件分支、循环)。
5.定义语句:定义语句也用来组织语句,把一系列运算语句集合起来给一个名字。描述一个包含一系列处理过程的计算单元,主要为了源代码的各种复用。python可以定义函数、类等代码对象。调用函数或类也可以得到数据对象,python里所有可调用的事物称为callable。
python基本类型-数值型
1.整数:int-最大特点是不限制大小(python3)
2.计算:.+、-、*、/、//(整数取余)、%(求余数)、m**n(m的n次方)、abs(m)(求绝对值)、divmod(m,n)(会得到两个整数,一个是m//n,一个是m%n)。
3.判断:==、>=、<=、<、>(比较判断真或假)
4.数的进制:十进制、二进制、八进制、十六进制 例:常用的十进制是0-9,十个不同的符号,逢十进一。
5.十进制:xxx 二进制:0bxxx 八进制:0oxxx 十六进制:0xxxx
6.float浮点数类型:受到17位有效数字的限制。(避免相等判断)
7.复数类型(a+bj):.imag显示虚部,.real显示实部。复数不可以做大小比较。复数取模-abs。
8.数学函数模块:math函数-计算整数和浮点数。
9.数据函数模块:cmath函数-计算复数-平面直角坐标与极坐标转换。
python基本类型-逻辑值
1.逻辑类型(bool):仅包括真True或假False两个。
2.计算:与and(双目-同真为真)、或or(双目-有真为真)、非not(单目-真为假、假为真)
3.优先级:not>and>or(尽量使用小括号表示优先级)
4.None:None=无意义、不知道、假、空值。
python基本类型-字符串
1.字符串:字符串就是把一个个文字的字符“串起来”的数据。
2.文字字符:文字字符包含拉丁字母、数字、标点符号、特殊符号,以及各种语言文字字符。
3.表示方法:用双引号或者单引号都可以表示字符串,但必须成对,多行字符串用三个连续单引号或多引号表示。
4.特殊字符:用转义符号“\”表示。
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
’ | 单引号 |
" | 双引号 |
\a | 响铃 |
\b | 退格 |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表 |
\t | 横向制表 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数yy代表的字符 |
\xyy | 十进制yy代表的字符 |
\other | 其它字符以普通格式输出 |
5.字符的编号:0(第一个).1.2…正向或-1(最后一个).-2.-3…负向,用这种整数编号可以从字符串中抽取任何一个字符。
6.字符串是数据本身。名字是数据的标签。名字和字符串是“名”和“值”之间的关系。字符串数值只能是字符串类型,名字则可以关联任意类型的数值。
7.常见的字符串操作:
- 获取字符串的长度:len函数
- 切片操作(slice):s[start: end :step]–左闭右开即包含start不包含end。
- 加法(+):将两个字符串进行连接,得到新的字符串。
- 乘法(*):将字符串重复若干次,生成新的字符串。
- 判断字符串内容是否相同(==)。
- 判断字符串是否包含某个字符串(in)。
- 删除空格:
str.strip:去掉字符串前后的所有空格,内部的空格不受影响。
str.lstrip:去掉字符串前部(左部)的所有空格。 str.rstrip:去掉字符串后部(右部)的所有空格。 判断字母数字:
str.isalpha:判断字符串是否全部由字母构成。 str.isdigit:判断字符串是否全部由数字构成。
str.isalnum:判断字符串是否仅包含字母和数字。而不包含特殊字符。 - 字符串的高级操作: split:分割 、 join:合并upper/lower/swapcase:大小写相关、Ijust/center/rjust/:排版左中右对齐、replace:替换子串。
8.序列(sequence):能够按照整数顺序排列的数据。
9.序列的内部结构:可以通过0开始的连续整数来索引单个对象。可以执行切片,获取序列的一部分。可以通过len函数来获取序列中包含多少元素。可以用加法“+”来连接为更长的序列。可以用乘法“*”来重复多次,成为更长的序列。可以用“in”来判断某个元素是否在序列中存在。
变量与应用
1.给数据命名:命名语法:<名字> = <数据> 命名规则 :字母和数字组合而成,下划线“_”算字母,字母区分大小写。不带特殊字符(如空格、标点、运算符等)。名字的第一个字符必须是字母,而不能是数字。在python3开始文字的命名规则中,汉字算字母。
2.名字:名字就像一个标签一样,通过赋值来“贴”在某个数据数值上。名字与数值的关联,称为引用。关联数值后的名字,就拥有了数据的值和类型。一个数值可以和多个名字关联。
3.变量:与数值关联的名字也称作变量,表示名字的值和类型可以随时变化。变量可以随时指向任何一个数据对象,变量的类型随着指向的数据对象类型改变而改变。
4.赋值:名字与数据对象关联的过程,称为给变量的赋值。“==”(相等关系)是对数值的相等性进行判断。“=”(赋值号)则是计算等号右边式子的值,赋值给等号左边的变量。
5.赋值语句:通过赋值号将变量和表达式左右相连的语句。
6.赋值语句多种形式:<名字>=<数据>、a=b=c=1、a,b,c=7,8,9、price +=1(自运算)、price /=3+4
上机练习2.0
列表
1.数据收纳盒:用来收纳数据对象的数据类型,以一种规则的下标索引方式(收纳盒名字+数据序号)访问到每个数据。这种收纳盒师是一种序列。
2.列表可以删除、添加、替换、重排序列中的元素(可变类型)。
3.创建列表:方括号法[]、指明类型法list()。
4.列表的操作:
- 增长列表:append操作-在列表末尾加上一个数据对象 。insert操作-在列表中间指定位置插入一个数据对象。 extend操作-把两个列表中一个列表接在另一个列表后面。
- 缩减列表:pop操作-在列表中间指定位置提取并移除,无参数的pop默认移走最后一个。remove操作-根据列表中指定对象的值进行移除。clear操作-整个列表变成一个空列表。
- 列表是一种可变容器,可随意增减。但兵说不定所有的数据容器都能像列表这样可以继续添加新元素。
- 重新组织:reverse操作-把列表中的数据元素头尾反转重新排列。sort操作-把列表中的数据元素按照大小重新排列。reversed/sorted操作:得到对应重新排列的列表,而不影响原来的列表。
方法名称 | 使用例子 | 说明 |
---|---|---|
append | alist.append(item) | 列表末尾添加元素 |
insert | alist.insert(i,item) | 列表中i位置插入元素 |
pop | alist.pop() | 删除最后一个元素,并返回其值 |
pop | alist.pop(i) | 删除第i个袁术,并返回其值 |
sort | alist.sor() | 将表中元素排序 |
reverse | alist.reverse() | 将表中元素反向排序 |
del | del alist[i] | 删除第i个元素 |
index | alist.index(item) | 找到item的首次出现位置 |
count | alist.count(item) | 返回item在列表中出现的次数 |
remove | alist.remove(item) | 将item的首次出现删除 |
元组
1.元组是不能再更新(不可变)序列。元组在保留列表大多数功能的同时,去掉了一些灵活性以换取更高的处理性能。
2.创建元组:圆括号法()、指明类型法tuple().
3.列表或元组中保存的各个数据称作元素,类型没有限制。
- 合并:加法运算(+)-连接两个列表/元组。乘法运算(*)-复制n次,生成新列表/元组。
- 列表/元组大小 len():列表/元组中元素的个数。
- 索引:alist[n]或atupie[n]-求编号为n的元素。可以用赋值语句给列表中的任何一个位置重新赋值。但元组属于不可变类型,索引只能获取对应位置中的数据值,不可重新赋值。
- 切片: alist[start: end :step] atuple[start: end :step] (左闭右开)
- 查找:in操作-判断某个元素是否存在于列表/元组中。index操作-指定的数据在列表/元组的哪个位置。count操作:指定的数据在列表/元组中出现过几次。
- 计算:sum函数-将列表中所有的数据元素累加。min/max函数-返回列表中最小/最大的数据元素。
字典
1.标签收纳盒:给数据贴上标签,就可以通过具有 特定含义的名字或者别的记号来获取数据。
2.通过标签(或者关键字)来索引数据,区别于列表或元组通过连续的整数来索引。
3.字典容器中保存着一些连的key-value对。通过键key来索引元素value。字典中的元素value没有任何顺序,可以是任意类型,甚至也可以是字典。字典的键值key可以是任意不可变类型(数值/字符串/元组)。
4.创建一个字典:花括号法和指明类型法
5.在字典中的每一项称为数据项,字典中保存的各个标签-数据值(key-value)。标签与数据值之间用冒号“:”连接。
6.批量添加数据项:例:student = dict.fromkeys((“name”,“age”))
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操作先给集合做一个替身。
9.集合运算
运算 | 运算符 | 新集合方法 | 更新原集合方法 |
---|---|---|---|
并 | alb | union | update |
交 | a&b | intersection | intersection_update |
差 | a-b | difference | difference_update |
对称差 | a^b | symmetric_difference | symmetric_difference_update |
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流,并且添加了一些自动的格式化(可以自定义分隔符和行末符)。
上机练习3.0
计算和控制流
1.“冯.诺伊曼结构”计算机:冯.诺伊曼-计算机之父。
2. 计算机硬件五大部件:
- 运算器:进行算术和逻辑运算。
- 控制器:控制计算机持续协调运行。
- 存储器:存储数据和逻辑。
- 输入设备:从计算机外部获取数据。
- 输出设备:将计算结果反馈给外界。
3.计算机内部运行过程-基本步骤:
(1)控制器从存储器中取出程序语句和额外数据。
(2)数据齐全的语句交给运算器进行算术或者逻辑运算。
(3)运算结果再存回存储器。
(4)控制器确定下一条程序语句,回到步骤1继续。
例:赋值语句<变量>=<表达式>
python语言的赋值语句很好地对应了“运算”和“存储”。
赋值语句的执行语句语义为:计算表达式的值,存储起来,贴上变量标签以便将来引用。与计算机运行过程中的“计算”和“存储”相对应。
“控制器确定下一条程序语句”即对应“控制”。
控制流程
1.控制流程:在计算机运行过程中,“下一条语句”决定了计算机是能够自动调整、自动反复操作,还是只能像计算器那样一步接着一步计算。这种决定“下一条语句”的机制,在程序设计语言中称作“控制流程”。
2.python语句中的控制流程:
- 顺序结构:按照语句队列前后顺序来确定下一条将要执行的语句。
- 条件分支结构:根据当前情况选择下一条语句发位置。
- 循环结构:周而复始地执行一系列语句。
3.简单类型与容器类型:
- 简单类型和容器类型之间的关系,就像玻璃珠与盒子、苹果与口袋
- 简单类型是实体对象。
- 容器类型是结构,将实体对象进行各种组织和编排。
类别 | 对象实体 | 容器 |
---|---|---|
数据 | 数值类型、逻辑类型、字符串类型 | 列表、元组、字典、集合、子集 |
计算 | 赋值语句 | 顺序结构、条件分支结构、循环结构 |
4.计算语句和结构语句:就像简单类型和容器类型之间的关系。用顺序、条件分支和循环结构,来对各个赋值语句进行编排,最终成为解决问题的程序。
控制流-条件分支结构
1.条件分支:让程序有了判断力,根据计算机内部的情况(如变量值),来决定下一步做什么,这样的控制流程,就称为条件分支。根据预设条件来控制下一步该运行哪段语句。
2.基本要素:预设的判断条件、达成条件后执行的语句。
3.扩展要素:当体哦阿健不满足执行的语句、多条件时那个满足执行那个条件。
条件语句
1.条件语句:
if<逻辑表达式>:
<语句块1>
......
else:
<语句块2>
- if和else都是“保留字”
- “逻辑表达式”是指所有运算的结果为逻辑类型(True或False)的表达式。
- “语句块”就是条件满足后执行的一组语句
- 冒号表示语句层次。
- 各种数据类型中某些值会自动转换为False,其它值则是True
2.多种情况的条件语句:
- 用else子语句进行判定
- 使用elif语句进行判定
if <逻辑表达式1>:
<语句块1>
elif <逻辑表达式2>:
<语句块2>
elif <逻辑表达式3>:
......
else:
<语句块n>
条件循环
1.循环结构:让计算机执行冗长单调的重复性任务。根据需要对一系列操作进行设定次数或者设定条件的重复,这样的控制流程,就称作循环结构。作用-能持续对大量数据进行处理,在长时间里对一些未知的状况进行连续监测循环结构。
2.循环结构的基本要素:
- 循环前提和执行语句-在执行这组语句之前,计算机会检查循环前提是否存在,只要存在,就会反复执行这组语句,直到循环前提消失。
- 循环前提的类型:(1)从某个容器或者潜在的数据集中逐一获取数据项,什么时候取不到数据项了,循环的前提就消失。(2)只要逻辑表达式计算结果为真(True),循环的前提就存在,什么时候逻辑表达式计算结果为假(False),循环的前提就消失了。
3.与条件分支结构的区别:循环结构会多次检查循环前提。
4.扩展要素:当循环前提消失,停止执行这组语句的时候,执行一次另一组语句。
5.while循环语法:
while<逻辑表达式>:
<语句块>
break #强制跳出循环,不会执行else。
continue #略过余下循环语句
<代码块>
else:#条件不满足退出循环,则执行
<语句块>
- while、else:保留字
- 逻辑表达式:指所有运算的结果为逻辑类型(True或False)的表达式。
- 语句块:一组语句。
6.循环嵌套:双重或多重嵌套
- 中断程序运行:CTRL+C
- 通过修改程序中range函数的参数,还可以验证其它范围内的连续整数。
迭代循环
1.迭代循环:
- python语句中for语句实现了循环结构的第一种循环前提。
for<循环变量>in<可迭代循环>:
<语句块1>
break #跳出循环
continue #略过余下循环语句
else:#迭代完毕,则执行
<语句块2>
(1)for、in和else都是“保留字”
(2)可迭代对象表示从这个数据对象中可以逐个取出数据项赋值给“循环变量”。
(3)可迭代对象有很多 类型,如字符串、列表、元组、字典、集合等,也可以有后面提到的生成器、迭代器等。
2.range函数:
(1)range(<终点>)
返回一个从0开始到终点的数列
(2)range(<起点>,<终点>)
从0以外的任务整数开始构造数列
(3)range(<起点>,<终点>,<步长>)
修改数列的步长,通过将步长设置为负数能够实现反向数列。
range构建的数列,包含起点整数,而不包含终点整数。
(4)range类型的对象
直接当作序列或转换为list或者tuple等容器类型。
嵌套循环中的跳出和继续
- 都只能在循环内部使用。
- 均作用于离它们最近的一层循环。
- break是跳出当前循环并结束本层循环。
- continue是略过余下循环语句并接着下一次循环。
上机实验4.0
1.给定n,计算1+2!+3!+…+n!的值。
def factorial(n):
j = 1
for i in range(1,n+1):
j *= i