Python 实验四 常用数据结构(2)

2023-05-16

6.某企业为职工发放奖金:如果入职超过5年,且销售业绩超过15000元的员工,奖金比例为0.2;销售业绩超过10000元的员工,奖金比例为0.15;销售业绩超过5000元的员工,奖金比例为0.1;其他奖金比例为0.005.如果是入职不超过5入职不超过5年,且销售业绩超过4000的员工,奖金比例为0.045;否则为0.01。输入入职年限、销售业绩,输出奖金比例、奖金,并将奖金存放到列表中并输出该列表。入职年限(为整数)输入-1的时候结束输入,为了简化所有输入均假定正确,不需判断小于0的情况。奖金为销售业绩与奖金比例的乘积。

list=[]
while True:
    years = int(input("请输入入职年限为:"))
    if years>=5:
        num = float(input("请输入销售业绩为:"))
        if num > 15000:
            proportion = 0.2
        elif num > 10000:
            proportion = 0.15
        elif num > 5000:
            proportion = 0.1
        else:
            proportion = 0.05
        award = proportion * num
        list.append(award)
        print("奖金比例为:",proportion,"奖金为:", award)
    elif years>=0 and years<5:
        num = float(input("请输入销售业绩为:"))
        if num > 4000:
            proportion = 0.045
        else:
            proportion = 0.01
        award = proportion * num
        list.append(award)
        print("奖金比例为:",proportion,"奖金为:", award)
    else:
        print("结束输入。")
        break
        
print()
print("奖金列表为:",list)

在这里插入图片描述
7.输入5个整数放到列表list1中,输出下标及值,然后将列表list1中大于平均值的元素组成一个新列表list2,输出平均值和列表list2。请利用列表推导式解决该问题。

print("请输入五个整数")
list1 = []
for i in range(5):
    n = int(input("请输入第"+str(i+1)+"个:"))
    list1.append(n)
avg = sum(list1)/len(list1)
list2 = [i for i in list1 if i > avg]
 
print()
print("平均值为:",avg)
print("list2为:",list2)

在这里插入图片描述
8.编写程序,将由1、2、3、4这4个数字组成的每位数都不相同的所有三位数存入一个列表中并输出该列表。请利用列表推导式解决该问题。

a = [1,2,3,4]
b = [i*100 + j*10 + k for i in a for j in a for k in a if i!= j and i!= k and j!= k ]
print(b)

在这里插入图片描述
9.编写程序,给定列表[1,9,8,7,6,5,13,3,2,1],先输出原列表,删除其中所有奇数后再输出。请利用列表推导式解决该问题。

a = [1,9,8,7,6,5,13,3,2,1]
b = [i for i in a if i%2 == 0]
print(a)
print(b)

在这里插入图片描述
10.百钱买百鸡:一只公鸡5元钱,一只母鸡3元钱,三只小鸡1元钱,现在要用100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?请利用列表推导式解决该问题。

list = [(a,b,c) for a in range(0,21) for b in range(0,34) for c in range(0,301) if 5*a + 3*b + c/3 ==100 and a + b + c ==100]
print(list)

在这里插入图片描述
【实验总结】
1.集合
(1)集合的创建
集合类型的值有两种创建方式:一种是用一对花括号将多个元素括起来,元素之间用逗号分隔;另一种是用函数set(),同时此函数也可以将字符串、列表、元组等类型的数据转换为集合类型。
注意,空集合只能用set()来创建,而不能用花括号{}表示,因为Python将{}用于表示空字典。
集合中没有相同的元素,因此Python在创建集合的时候会自动删除掉重复的元素。
(2)集合的运算
①len()
len()函数返回集合中元素的个数。
②in
判断某元素是否存在于集合之中,判断结果用布尔值True或False表示。
③并集、交集
并集:创建一个新的集合,该集合包含两个集合中的所有元素。
交集:创建一个新的集合,该集合为两个集合中的公共部分。
④差集
A-B表示集合A与B的差集,返回由出现在集合A中但不出现在集合B中的元素所构成的集合。
⑤对称差
返回由两个集合中那些不重叠的元素所构成的集合。
⑥子集和超集
如果集合A的每个元素都是集合B中的元素,则集合A是集合B的子集。超集是仅当集合A是集合B的一个子集,集合B才是集合A的一个超集。
A<=B,检测A是否是B的子集;
A<B,检测A是否是B的真子集;
A>=B,检测A是否是B的超集;
A>B,检测A是否是B的真超集;
A |= B将B的元素并入A中。
(3)集合的方法
①union()、intersection()
union()方法相当于并集运算。intersection()方法相当于交集运算。
②update()
update()方法相当于集合元素合并运算,注意与union()方法的区别。
③difference()
difference()方法相当于差集运算。
④symmetric_difference()
symmetric_difference方法相当于对称差运算。
⑤issubset()和issuperset()
issubset()方法用于判断是否子集。issuperset()方法用于判断是否超集。
⑥add()
add()方法的作用是向集合中添加元素。
⑦remove()
remove()方法的作用是从集合中删除元素,如果集合中没有该元素,则出错。
⑧discard()
discard()方法的作用是从集合中删除元素,如果集合中没有该元素,也不提示出错。
⑨pop()
pop()方法的作用是从集合中删除任一元素,并返回该元素;如果集合为空,则抛出KeyError异常。
⑩clear()
clear()方法的作用是从集合中删除所有元素,变成一个空集合。
(4)可迭代(Iterable)对象与迭代器(Iterator)
①可迭代(Iterable)对象
我们知道列表、元组、字符串、字典可以用 for…in…进行遍历。从表面来看,只要可以用 for…in…进行遍历的对象就是可迭代对象,那么列表、元组、字符串、字典都是可迭代对象。实际上,如果一个对象实现了__iter__方法,那么这个对象就是可迭代(Iterable)对象。
②迭代器(Iterator)
实现了__iter__方法和__next__方法,并且可以通过__next__方法不断返回下一个值的对象称为迭代器(Iterator)。迭代器(Iterator)还可以通过内置函数next()访问下一个元素。
列表、元组、字符串、字典、集合实现了__iter__方法,但并未实现__next__方法,这些对象均不能称为迭代器(Iterator)。
我们还是可以通过调用Python内置函数isinstance()来判断一个对象是否属于迭代器(Iterator)。
虽然列表、元组、字符串、字典、集合都是可迭代(Iterable)对象而不是迭代器(Iterator),但可以通过iter()函数获得一个迭代器(Iterator)。
③相关内置函数
enumerate()
格式:enumerate(iterable, start=0)
功能:返回下标和值的enumerate对象。第1个参数表示可迭代(Iterable)对象,第2个参数表示下标的开始值,默认从0开始。
zip()
格式:zip(iter1 [,iter2 […]])
功能:将多个迭代器(Iterator)对象(或者可迭代(Iterable)对象)中的元素压缩到一起,返回一个zip对象。
同样通过帮助我们得知zip对象既是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。
map()
格式:map(func, *iterables)
功能:把一个函数func依次映射到可迭代(Iterable)对象的每个元素上,返回一个map对象。
同样通过帮助我们得知map对象既是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。
filter()
格式:filter(function or None, iterable)
功能:把一个带有一个参数的函数function作用到一个可迭代(Iterable)对象上,返回一个filter对象,filter对象中的元素由可迭代(Iterable)对象中使得函数function返回值为True的那些元素组成;如果指定函数为None,则返回可迭代(Iterable)对象中等价于True的元素。
同样通过帮助我们得知filter对象既是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。
(5)推导式
①列表推导式
列表推导式(list comprehension)是Python开发时用得最多的技术之一,表示对可迭代(Iterable)对象的元素进行遍历、过滤或再次计算,生成满足条件的新列表。它的结构是在一个方括号里包含一个函数或表达式(再次计算),接着是一个for语句(遍历),然后是0个或多个for(遍历)或者if语句(过滤),在逻辑上等价于循环语句,但是形式上更简洁。
语法形式:
[function / expression for value1 in Iterable1 if condition1
for value2 in Iterable2 if condition2
……
for valuen in Iterablen if conditionn ]
②字典推导式
字典推导式和列表推导式的使用方法类似,只不过将方括号变成花括号,并且需要两个表达式,一个生成键,一个生成值,两个表达式之间使用冒号分隔,最后生成的是字典。
语法形式:
{key_expression: value_expression for value1 in Iterable1 if condition1]
for value2 in Iterable2 if condition2
……
for valuen in Iterablen if condition}
③集合推导式
集合也有自己的推导式,跟列表推导式类似,只不过将方括号变成花括号,最后生成的是集合。
语法形式:
{function / expression for value1 in Iterable1 if condition1
for value2 in Iterable2 if condition2
……
for valuen in Iterablen if conditionn }
④生成器推导式
生成器推导式用法与列表推导式类似,把列表推导式的方括号改成圆括号。它与列表推导式最大的区别是:生成器推导式的结果是一个生成器对象,是一种迭代器(Iterator);而列表推导式的结果是一个列表。
生成器对象可以通过for循环或者__next__()方法、next()函数进行遍历,也可以转换为列表或元组,但是不支持使用下标访问元素,已经访问过的元素也不支持再次访问。当所有元素访问结束之后,如果想再次访问就必须重新创建该生成器对象。
(6)序列解包
①多变量同时赋值
②一个对象值赋给多个变量
一个类似于序列结构的对象可以根据其元素的数量,一次同时为多个变量赋值。这个对象可以是一个列表、元组、字符串、zip对象、enumerate对象、map对象等可迭代对象,也可以是由字典的key或value组成的可迭代对象。
③交换两个变量的值
④切片支持序列解包
⑤使用序列解包同时遍历多个序列

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 实验四 常用数据结构(2) 的相关文章

  • OpenCV实验系列之Mask操作

    OpenCV实验系列之Mask操作 注意 xff1a 以下内容根据opencv官网提供的教程结合个人理解所得 xff0c 仅是个人学习笔记 xff0c 可能存在错误或偏差 xff0c 欢迎指正 OpenCV实验系列之Mask操作 Mask矩
  • UART通信可否只接VCC、RXD、TXD而不接GND?

    使用串口登录树莓派时出现的问题 xff1a 将TF卡插入到树莓派 xff0c 然后开启电源 xff0c 采用串口查看登录界面时出现误码 xff0c 最后排查得出是没有共地 那么假设有两款5V单片机 xff0c 独立供电 按理 xff0c 连
  • Linux 网络编程项目 —— FTP 网盘

    文章目录 项目简介知识点描述项目功能指令远程功能指令本地功能指令 使用的关键函数access 函数popen 函数chdir 函数strtok 函数strncmp 函数linux system函数是否执行成功判断方法 基本流程服务端客户端
  • VMware虚拟机

    文章目录 VMware虚拟机联网三种网络连接方式桥接模式联网原理NAT模式联网原理NAT模式配置手动配置网络关于apt命令关于ifconfig命令简介命令格式命令参数使用实例显示网络设备信息 激活状态的 开启 禁用网络 虚拟机内核与逻辑处理
  • 智能无障碍轮椅——ESP8266总体介绍及ESP-01S入门调试

    文章目录 一 ESP8266 介绍二 ESP8266的多种型号1 DT 062 ESP 01和ESP 01S 左边ESP 01S xff0c 右边ESP 01 3 ESP 12F 三 两种开发方式1 AT指令开发方式2 SDK开发方式 四
  • ROS操作系统快速入门

    文章目录 一 简介模块化 分布式的系统设计 二 安装虚拟机与ROS系统安装虚拟机的缺点安装ubuntu20 04 三 ROS系统安装切换镜像源视频教程 四 ROS应用商城APT源简介与指令介绍案例ros应用商城介绍 五 GIthub建立如下
  • Proteus 仿真8086+8255,运行时错误的解决

    要实现的功能 xff1a 通过开关控制流水灯的显示方式 电路原理图 xff1a 汇编源程序 xff1a CODE SEGMENT ASSUME CS CODE START MOV AL 90H OUT 36H AL AGAIN IN AL
  • 7年程序员项目经历归纳总结

    工作五年 xff0c 敲代码7年 xff0c 科研院所 国企 私企都有过经历 xff0c 发现项目的开发过程总是那么的相似 xff0c 过程举例如下 xff08 事实上画个流程图可能更好 xff0c 但是懒得画了 xff09 xff1a 1
  • Ubuntu20.04+ros(noetic)+RealsenseT265+ORB_SLAM3(一)

    noetic安装的很顺利 xff0c 照着官方文档来就行 xff1b Kalibr的编译 xff1a 一开始参考了 Ubuntu16 04 43 RealsenseT265跑通VINS Fusion IATBOMSW的博客 CSDN博客 x
  • 如何开启英伟达TX2的所有USB3.0口

    TX2新烧完系统之后 xff0c 默认只有一个USB3 0口使能了 xff0c 实际上TX2最多可以使能3个USB3 0口 xff0c 在TX2的design guide中 xff0c 可以找到相应的配置说明 xff0c 见下图 TX2默认
  • Ubuntu20.04+ros(noetic)+RealsenseT265+ORB_SLAM3(二)

    终于编译kalibr成功了 xff0c 可以标定t265了 标定分为三个步骤 xff0c 分别是IMU xff0c 双目和联合标定 xff0c 标定过程仍然参考了Ubuntu16 04 43 RealsenseT265跑通VINS Fusi
  • ADRC控制系统离散形式的稳定性证明

    1 引言 这个问题是最近课题组一个师兄的SCI控制论文的一部分 xff0c 应师兄之邀 xff0c 博主贡献了控制系统稳定性的数学证明 博主目前的研究方向跟控制领域毫无关联 xff0c 只负责其中的系统收敛性证明 师兄的控制系统是一个较为一
  • 固定翼无人机的自主降落-Simulink纵向控制仿真

    本项目来源于一项课程设计 xff0c 用于简单固定翼模型的降落 需要模型的请点击下载链接 xff0c 通过积分获取 https download csdn net download nudt zrs 12454986 练习过固定翼飞行的 x
  • 找工作笔试中的常见考点

    1 Java程序初始化执行顺序 xff1a 父类静态变量 父类静态代码块 子类静态变量 子类静态代码块 父类非静态变量 父类非静态代码块 父类构造函数 子类非静态变量 子类非静态代码块 子类构造函数 2 程序运行结果是多少 xff1f pu
  • eclipse修改后无法正常保存文件解决办法

    ctrl 43 s保存修改的代码时报错 window gt Preferences gt General gt Content Types gt Text gt 选中出现保存问题的文件类型 xff08 如JSP xff09 在底部出现 39
  • Ubuntu18.04+ros-melodic (包括Ubuntu16.04+ros-kinetic)乐视奥比中光相机在nano、tx2、PC等设备上的安装与使用,并解决无法显示rgb信息的问题

    2020 12 25修改 xff1a 本文底部所说的无法显示rgb的情况 xff0c 如果你买的是乐视就按照这个来绝对ok 如果你买的是奥比中光的原装正版 xff0c 直接启动launch文件就行了 xff0c 无须再修改端口号 本来用Ki
  • 数据库单表查询教师班级学生信息表

    单表查询实例 以下为单表查询小实验 xff0c 由于没有教师表和学生表数据库文件 xff0c 因此没有运行截图 xff0c 若有语法错误还望大佬们指正 1 查询学生信息表 info student 中的班级信息 Select 班级 span
  • 在用于 GROUP BY 子句分组依据列表的表达式中,不能使用聚合或子查询。

    在用于 GROUP BY 子句分组依据列表的表达式中 不能使用聚合或子查询 示例题目 原因分析 解决方案 示例题目 查询所有学生的平均成绩 显示字段为学号 姓名 平均成绩 题目 查询所有学生的平均成绩 显示字段为学号 姓名 平均成绩 报错情
  • 在查询中进行统计,分组统计,分开统计

    在查询中进行统计 按角色分组算出每个角色按有办公室和没办公室的统计人数 列出角色 xff0c 数量 xff0c 有无办公室 注意一个角色如果部分有办公室 xff0c 部分没有需分开统计 xff09 span class token cons
  • vscode在哪里配置git

    一 安装Git管理工具 xff0c 可上官网安装 xff0c 安装路径https git scm com xff0c 安装路径默认C Program Files Git xff0c 可自行修改 xff0c 这里我是安装在D Program

随机推荐

  • macOS下的串口调试助手——CoolTerm的使用

    很多希望在 macOS 下做嵌入式开发的朋友都苦于没有合适的串口调试软件 xff0c 今天我来介绍分享一下 CoolTerm 这款跨平台串口调试助手 1 下载安装 首先到 CoolTerm 的官方网站 http freeware the m
  • vscode怎么关掉/禁用源代码管理

    问题描述 运行项目时源代码管理自动运行 有时还报错实在不便 而运行本地项目时往往不用进行版本控制 xff0c 也就不需要vscode的源代码管理 解决方法 在设置中搜索GIT Enabled xff0c 将其关闭即可 如果求稳可以一并把gi
  • ‘com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor‘ 已经过时了导致出现返回total总为0的问题

    在配置类中去掉原有的依赖 他已经过时了 去掉之后 添加这个功能更多更新的Bean对象 64 Configuration span class token keyword public span span class token keywor
  • UnsatisfiedDependencyException: Error creating bean with name ‘subjectServiceImpl‘: Unsatisfied depe

    背景 看xml所在的路径不舒服 任性改资源路径 以为idea会帮我更新引用就以身试险了哈哈哈 报错信息是bean出现了创建错误 查了网上大部分的博客 一一排除后还是报错 网上大部分建议总结如下 1 先去排查service实现层有没有添加注解
  • Web server failed to start. Port 9020 was already in use./window环境

    Web server failed to start Port 9020 was already in use Web服务器无法启动 端口9020已在使用中 解决思路 xff1a 端口被占用了 xff0c 需要我们去杀死相应的进程 xff0
  • 怎么删除存在表关联的原有数据库表空间?

    怎么删除原有数据库表空间 xff1f 1 xff1a 查询所有的表空间 select tablespace name from sys dba tablespaces 2 xff1a 删除 普通删除 DROP TABLESPACE MESA
  • oracle数据库还原/finalshell/删除表空间/用户名冲突

    数据库10 0 1 131还原 1 首先进行数据库finalshell的配置 账号 xff1a mesadmin 密码 xff1a 2 加载oracle配置文件 sudo su su oracle source etc profile 3
  • C++中的数据类型及其所占字节

    1 整型 包括 xff1a short xff08 短整型 xff09 xff0c 占2个字节 xff1b int xff08 整型 xff09 xff0c 占4个字节 xff1b long xff08 长整型 xff09 xff0c 占4
  • C语言中的关键字

    C语言共有32个关键字 关键字不能作为常量名 变量名或其他标识符名称 根据关键字的作用 xff0c 可将关键字分为 xff1a 数据类型关键字 控制语句关键字 存储类型关键字和其它关键字这四类 数据类型关键字 xff08 12个 xff09
  • C语言字符串和字符串结束标志

    1 在C语言中 xff0c 是将字符串作为字符数组来处理的 2 C语言规定了一个 字符串结束标志 xff0c 以字符 0 作为结束标志 如果字符数组中存有若干字符 xff0c 前面九个字符都不是空字符 xff08 0 xff09 xff0c
  • C语言字符数组的输入和输出

    字符数组的输入输出有两种方法 xff1a xff08 1 xff09 逐个字符输入输出 用格式符 c 输入或输出一个字符 例如 span class token keyword int span span class token funct
  • android手机开启IPv6(电信)

    安卓手机开启IPv6 xff08 电信 xff09 系统设置找到移动网络 接入点 接入点选择CTNET 接入设置点进去可以找到APN协议 xff0c 选择IPv4 IPv6即可 实测手机这样设置后开热点笔记本 xff0c 能稳定获得ipv6
  • C语言 怎样定义函数

    1 定义函数 C语言要求 xff0c 在程序中用到的所有函数必须要 先定义 xff0c 后使用 定义函数应包括以下几个内容 xff1a xff08 1 xff09 指定函数的名字 xff0c 以便以后按名调用 xff08 2 xff09 指
  • C语言 函数的返回值

    通过函数调用使主调函数能得到一个确定的值 xff0c 这就是函数值 xff08 函数的返回值 xff09 1 函数的返回值是通过函数中的return语句获得的 return语句将被调用函数中的一个确定值带回到主调函数中去 如果需要从被调函数
  • C语言 函数的嵌套调用

    C语言的函数定义是互相平行 独立的 xff0c 也就是说 xff0c 在定义函数时 xff0c 一个函数内不能再定义另一个函数 xff0c 即不能嵌套定义 xff0c 但可以嵌套调用函数 xff0c 即 xff0c 在调用一个函数的过程中
  • C语言 Hanoi(汉诺)塔问题,用递归解决

    问题 古代有一个梵塔 xff0c 塔内有3个座A xff0c B xff0c C 开始时A座上有64个盘子 xff0c 盘子大小不等 xff0c 大的在下 xff0c 小的在上 有一个老和尚想把64个盘子从A作移到C座 xff0c 但规定每
  • C语言 数组元素的指针

    1 一个变量有地址 xff0c 一个数组包含若干个元素 xff0c 每个数组元素都在内存中占用存储单元 xff0c 它们都有相应的地址 2 指针变量既然可以指向变量 xff0c 当然也可以指向数组元素 xff08 把某一元素的地址放入一个指
  • Python 实验三 控制语句

    1 从键盘接收整数的一百分制成绩 xff08 0到100 xff0c 要求输出其对应的成绩等级A E 其中 xff0c 90分 xff08 包含 xff09 以上为A xff0c 80 89 xff08 均包含 xff09 分为B xff0
  • Python 实验四 常用数据结构(1)

    1 从键盘输入一个正整数列表 xff0c 以一1结束 xff0c 分别计算列表中奇数和偶数的和 n span class token operator 61 span span class token builtin int span sp
  • Python 实验四 常用数据结构(2)

    6 某企业为职工发放奖金 xff1a 如果入职超过5年 xff0c 且销售业绩超过15000元的员工 xff0c 奖金比例为0 2 xff1b 销售业绩超过10000元的员工 xff0c 奖金比例为0 15 xff1b 销售业绩超过5000