• 欢迎访问废江网站,承蒙遇见 QQ群
  • 本站将致力于推送优质的java知识以及算法,开源代码!

py学习(流程控制语句和组合数据类型)

python 站点默认 4年前 (2019-11-13) 1030次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

流程控制语句

• 简介
• pyth代码在执行时是按照自上向下顺寻执行的
• 通过流程控制语句,可以改变程序的执行顺序,也可以让指定的程序反复执行多次
• 流程控制语句分成两大类: 条件判断语句 , 循环语句
• 条件判断语句(if语句)
• 语法 : if 条件表达式 : 语句(代码块)
• 执行的流程 :if语句在执行时,会对条件表达式进行求值判断,如果为true,则执行if后的语句;如果为false,则不执行
• 默认情况下,if语句只会控制紧随其后的语句,如果希望,if可以控制多条语句,则可以在if后面跟着一个代码块
• 代码块
• 代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
• 代码块就是一种为代码分组的机制
• 如果要编写代码块,语句就不呢个紧随在:后边,而是要写在下一行
• 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
• 缩进有两种方式,一种是使用tab键,一种是使用四个空格。python代码中使用的缩进方式必须统一
• input函数
• 该函数用来获取用户的输入
• input()调用后,程序会立即暂停,等待用户输入
• 用户输入完成内容以后,点击回车程序才会继续向下执行
• 用户输入完成以后,其所输入的内容都会以返回值形式返回,input的返回值是一个字符串
• input()函数中可以设置一个字符串作为参数,这个字符串将会作为提示文字显示
• input()也可以用于暂时阻止程序结束
• If – else 语句
• 语法 : if 条件表达式 :
代码块
else :
代码块
• If-elif-else 语句
• 语法 :
if 条件表达式 :
代码块
elif 条件表达式:
代码块
elif 条件表达式:
代码块
else :
代码块
• 循环语句
• whlie循环 + for循环
• While循环
• 语法:
While 条件表达式:
代码块
Else :
代码块
• 执行流程:while语句在执行时,会先对后的条件表达式进行求值判断,如果判断为true,则执行循环体(代码块),循环体执行完毕,继续对条件表达式进行求职判断,以此类推,直到判断结果为false,则循环终止
• 如果循环有对应的else,则执行else后的代码块
• 循环的三个要件(表达式)
• 初始化表达式,通过初始化表达式初始化一个变量
• 条件表达式,通过初始化表达式一个变量
• 更新表达式,修改初始化变量
• While 的练习
• 求100以内所有奇数之和
○ Result=0
○ While I <100 : ○ i+=1 ○ if i%2 != 0: ○ result += I ○ Print('result =' , result) • 求水仙花数 ○ I = 100 ○ While I <1000: ○ A= i//100 ○ B =I//10 %10 ○ C=i%10 ○ If a**3 +b**3 +c**3 == i: ○ print(i) ○ i+=1 • 循环嵌套 • i=0 • While i< 5: • j=0 • while j<5 : • print("*",end='') • j+=1 • print() • i+=1 • 打印99乘法表 ○ i=0 ○ While i< 0 : ○ I +=1 § J=0 § While j< i: § J+=1 § Print(f"{j}*{i} ={i*j}",end="") ○ Print() • break和continue • break可以用立即退出循环语句(包括else) • continue可以用来跳过当次循环 • break和continue都是只对离他最近的循环起作用 • 质数练习 • 求100以内的质数,最初代码 • i=2 • while i<= 100: flag=True j= 2 While j

列表,元组,字典,集合

• 列表
• 列表是python中的一个对象
• 对象(object)就是内存中专门用来存储数据的一块区域
• 之前学习的对象,像数值,它只能保存一个单一的数据
• 列表中可以保存多个有序的数据
• 列表的使用:1列表的创建,2列表的操作
• 列表的创建,通过[]来创建列表
○ 例如:My_list =[]#创建了一个空列表
• 列表存储的数据,我们称为元素
• 一个列表中可以存储多个元素,也可以在创建列表时,来指定列表的元素
• 当列表中添加多个元素时,多个元素之间使用,隔开
○ 例如:my_list = [10,20,30,40,50]#创建了一个保存有五个元素的列表
• 列表可以保存任意的对象
○ 例如:My_list=[10,’hello’,True,None,[1,2,3],print]
• 列表中的对象会按照插入的顺序存储到列表中,
• 第一个插入的对象保存到第一个位置,第二个保存到第二个位置
• 我们可以通过索引(index)开获取列表中的元素
• 索引时元素在列表中的位置,列表中每一个元素都有索引
• 索引是从0开始的整数,列表中第一个位置索引为0,第二个位置索引为1……
• My_list=[10,20,30,40,50]
• 通过索引获取列表中的元素
• 语法: my_list [索引]
○ 例如print(my_list[1])
• 获取列表的长度,列表中元素的个数
• len()函数,通过该函数可以获取列表的长度
• 获取到的长度的值,是列表的最大索引+1
• 切片
• 切片指从现有列表中,获取一个子列表
• 列表的索引可以是负数
• 如果索引是负数,则从后向前获取元素,-1表示倒数第一个,-2表示倒数第二个,以此类推
• 通过切片来获取指定元素
• 语法: 列表[起始 :结束]
• 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
• 做切片操作时,总会返回一个新的列表,不会影响原来的列表
• 如果省略结束位置,则会一直截取到最后
• 如果省略开始位置,则会从第一个元素开始截取
• 语法 列表[起始 :结束 : 步长]#默认步长为1
• 步长不能时0,步长可以是负数
• 如果是负数,则会从列表的后部向前取元素
• 通用操作
• +可以将两个列表拼接成一个列表
• *可以将列表内元素重复指定次数
• in用来检查制度那个元素是否存在于列表中
• 如果存在,返回True,否则返回Flase
• Not in 与in语法相反
• min()获取列表中的最小值
• max()获取列表中的最大值
• 两个方法(method),方法和函数基本是一样的,只不过方法必须通过对象.方法()的形式调用
• 实际上就是和对象关系紧密的函数
• S.index()获取指定元素在列表中的第一次出现的索引
• index的第二个参数,表示查找的起始位置
• 第三个参数,表示查找的结束位置
• 如果没查到到会报错。。。。。。。
• S.count()
• 统计列表中指定元素出现的次数
• 序列
• 序列是pyth中最基本的一种数据结构
• 数据结构指计算机中数据存储的方式
• 序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)
• 并且序列的数据会按照添加的顺序来分配索引
• 序列的分类:
• 可变序列:列表(list)
• 不可变序列:字符串(str)元组(tuple)
• 以上的函数,方法对序列都是有效的,即不仅可以对列表使用,也可以对字符串和元组使用
• 修改列表
• 修改列表中的元素
• 直接通过索引来修改元素
• 通过del来删除元素
○ 例如 del my_list[2] # 删除索引为2的元素
• 通过切片来修改列表
• 在给切片进行赋值时,只能使用序列
• My_ list[0:0] #向索引中为0的位置插入元素
• 当设置了步长时,序列中元素的个数必须和切片中元素的个数一致
• 通过切片来删除元素,例如:
• Del mylist[0 :2]
• Mylist[ 1:3] =[]
• 以上操作只适用于可变序列
• 不可变序列,无法通过索引来修改
• 可以通过list()函数将其他序列转换为list
• 列表的方法
• x表示元素
• append()
• 向列表的最后添加一个元素
○ 例如 : s.append(x)
• insert()
• 向列表中指定位置插入一个元素
○ 例如 : s.insert(2,x)
• extend()
• 使用新的序列来扩展当前序列
• 需要一个序列来作为参数,它会将该序列中的元素添加到当前列表中
○ 例如s.extend(一个列表)
• clear()
• 清空序列
○ 例如s.claer()
• pop()
• 根据索引删除并返回指定元素
• 如果()不指定元素则默认删除最后一个元素
• remove()
• 删除指定值的元素,如果相同值的元素有多个,只会删除第一个
• reverse()
• 反转列表
• sort()
• 用来对列表中的元素进行排序,默认是升序排列
• 如果需要降序排列,则需要传递一个revserse=True作为参数
• 遍历列表
• 遍历列表,指的就是将列表中所有的元素取出来
• 通过while循环来遍历
• 通过for循环来遍历列表
• 语法 :
• for 变量 in 序列 :
• 代码块
• for循环中的代码块会执行多次,序列中有几个元素执行几次,每执行一次就会将序列中的一个元素赋值给变量
• EMS员工管理系统
• 做命令行版本的员工管理系统
• 功能:
• 1-查询:显示当前系统中的所有员工
• 2-添加:将员工添加到当前系统中
• 3-删除:将员工从当前系统删除
• 4-退出:退出当前系统
• range()是一个函数,可以用来生成一个自然数序列
• R =range(5)#生成一个[0,1,2,3,4]这样的序列
• Print(list(R))
• 该函数需要三个参数
• 1 起始位置(可以省略,默认是0)
• 2 结束位置
• 3 步长(可以省略,默认是1)
• 通过range()可以创建一个执行指定次数的for循环
• For I in range (x) :
• print(i)
• for()循环除了创建方式意外,其余和while一样,包括else,包括break,continue,都可以在for循环中使用
• 元组 tuple
• 元组是一个不可变序列
• 它的操作方式基本上和列表一致
• 一般当我们希望数据不变时,就是用元组,其余情况使用列表
• 创建元组:使用()创建元组
• My_tuple=()创建了一个空元组
• 当元组不是空元组时,括号可以省略
• 当元组不是空元组,它里边至少有一个,
• 元组的解包(解构)
• 不光元组可以解包,字符串和列表也都可以解包
• a,b,c,d=my_tuple
• 交互a,b的值: a,b=b,a
• a,b,*c=my_tuple
• 在对一个元组进行解包时,变量的数量必须和元组中的数量一致
• 也可以在变量前边添加一个*,这样变量会将获取元组中所有剩余的元素,并且返回值为一个列表
• 可变对象
• 每个对象中都保存了三个数据:
• id(标识)
• type(类型)
• value(值)
• 列表就是一个可变对象
• a=[1,2,3]
• 改对象:a=[0] #这种方式不是修改变量,而是通过变量去修改对象的值,所以说列表是可变对象
• 当我们去修改对象时,如果有其他变量也指向了该对象,则修改也会在其他变量中体现
• 改变量:a=[4,5,6] #这钟操作是在给变量重新赋值,这种操作会改变变量所指向的对象
• 为一个变量重新赋值时,其他变量不会改变
• ==和is
• ==和!=比较的是对象的值是否相等
• Is 和is not比较的是对象的id是否相等
• 字典(dict)
• 字典属于一中新的数据结构,称为映射(mapping)
• 字典的作用和列表类似,都是用来存储对象的容器
• 列表的存储数据的性能很好,但是查询数据的性能的很差
• 在字典中每一个元素都有一个唯一的名字,通过这个唯一的名字可以快速查到指定的元素
• 在字典中可以保存多个对象,每个对象都会有唯一的名字
• 这个唯一的名字,称其为键(key),通过key可以快速查询value
• 这个对象,称其为(value)
• 每个字典中都可以有多个键值对,每一个键值对我们称其为一项
• 使用{}来创建字典
• 语法: {key:value,key:value,key:value}
• 字典的值可以是任意对象
• 字典的键可以是任意的不可变的对象(int,str,bool,tuple) , 字典的键是不能重复的,如果出现了重复的后边的会替换前边的
• 需要根据键来获取值,例如:print(dict[ 键])
• 字典的使用_1
• 使用dict()函数来创建字典
• 每一个参数都是一个键值对,参数名就是键,参数值就是值
• 也可以将一个包含双值子序列的序列转换为字典
• 双值序列,序列中只有两个值,[1,2]
• 子序列,如果序列中的元素也是序列,那么称这个元素为子序列
• len()获取字典中键值对的个数
• in检查字典中是否包含指定的键
• Not in类似
• 获取字典中的值,根据键来获取值
• 语法 : dict[key]
• get(key[,default])该方法用来根据键来获取字典中的值
• print(d.get(‘name’))
• 修改字典
• Dict[key]=value
• 如果key在字典中存在,则会修改,如果key不存在,则会向字典中添加改键值
• setdefault(key[,default])可以用来添加键值对
• 如果key已经存在于字典中,则返回key 的值,不会对字典做任何操作
• 如果key不存在,则向字典中添加这个key,并设置value
• update([other])
• 将其他字典的key-value添加到当前字典中
• 如果有重复的key,则后边的会替换到当前的
Dict1.update(dict2)
• 字典的使用-2
• 可以使用del来删除字典中的键值对
• 例如: del dict【’a’】
• popitem()
• 随机删除字典里的一个键值对,一般都会删除最后一个键值对
• 删除之后,它会将删除的key-value作为返回值返回
• 返回的是一个元组,元组中有两个元素,第一个元素是删除的key,第二个删除的value
• Dict.popitem()
• Pop(key【,default】)
• 根据key删除字典中的key-value
• 会将被删除的value返回!
• 如果删除不存在的key,会抛出异常
• 如果指定了默认值,在删除不存在的key时,不会报错,而是直接返回默认值
• Dict.pop(‘键‘,’默认值‘)
• clear()
• 用来清空字典
• copy()
• 改方法用于对字典进行浅复制(两个对象)
• 复制以后的对象和原对象是独立,修改一个不会影响另一个
• 注意,浅复制会简单复制对象内部的值,如果值也是一个可变对象,这个可变对象不会被复制
• 遍历字典
• keys()改方法会返回字典的所有的key
• 改方法会返回一个序列,序列中保存字典的所有的键
• 通过keys()来获取所有的键
• values()
• 该方法会返回一个序列,序列中保存字典的左右的值
• items()
• 该方法会返回字典中所有的项
• 会返回一个序列。序列中包含双值子序列
• 双值分别是字典中的key和value
• For k,v in dict.item() :
• print (k, ‘=’ ,v)
• 集合(set)
• 集合和列表非常相似
• 不同点:
• 1 集合只能存储不可变对象
• 2 集合中存储的对象是无序的(不是按照元素的插入顺序保存)
• 3 集合中不能出现重复的元素
• 使用{}来创建集合
• s={1,2,3,4}
• 使用set()函数来创建集合
• s=set() #空集合
• 可以使用set()来将序列转换为集合
• 使用set()将字典转换为集合时,只会包含字典中的键
• 使用in 和not in来检查集合中的元素
• 使用len()来获取集合中的元素的数量
• add()向集合中添加元素
• update()将一个集合中的元素添加到当前集合中
• update()中可以传递序列或字典作为参数,字典只会使用键
• pop()随机删除并返回一个集合中的元素
• remove()删除集合中的指定元素
• clear()清空集合
• copy()对集合进行浅复制
• 集合的运算
• 在对集合做运算时,不会影响原来的集合,而是将运算结果返回
• &交集运算
• | 并集运算
• -差集运算
• ^异或集
• <=检查一个集合是否是另一个集合的子集 • <检查一个集合是否是另一个集合的真子集 • >=检查一个集合是否是另一个集合的超集
• >检查一个集合是否是另一个集合的真超级


废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:py学习(流程控制语句和组合数据类型)
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址