当前位置: 首页 > article >正文

【Python习题集3】常用数据结构习题

数据结构

  • 一、实验内容
  • 二、实验总结

一、实验内容

1.从键盘输入一个正整数列表,以-1结束,分别计算列表中奇数和偶数的和。
(1)源代码

n = int(input("请输入一个正整数:"))
list3 = []
while n != -1:
    list3.append(n)
    n = int(input("请输入一个正整数:"))
else:
    print("输入结束")
print(list3)
list1 = []
list2 = []
for i in list3:
    if i % 2 != 0 :
        list1.append(i)
    else:
        list2.append(i)
print("列表1中的奇书和为:",list1,sum(list1))
print("列表中的偶数和为:",list2,sum(list2))

(2)运行结果截图
在这里插入图片描述
2.已知10个学生的成绩为68,75,32,99,78,45,88,72,83,78,请将成绩存放在列表中,请对其进行统计,输出优(100-90),良(89-80),中(79-60),差(59-0)4个等级的人数
(1)源代码

grade = int(input("请输入学生成绩:"))
list_grade = []
while grade > 0:
    list_grade.append(grade)
    grade = int(input("请输入学生成绩:"))
else:
    print("成绩输入结束,现在开始统计和输出。")
print("总成绩列表为:",list_grade)
list1=[]
list2=[]
list3=[]
list4=[]
for i in list_grade:
    if i >=90:
        list1.append(i)
    elif i>=80:
        list2.append(i)
    elif i>=60:
        list3.append(i)
    else:
        list4.append(i)
print("优:",len(list1),  "良:",len(list2),"中:",len(list3),"差:",len(list4))

(2)运行结果截图
在这里插入图片描述

3.利用while循环创建一个包含10个奇数的列表,如果输入的不是奇数要给出提示信息并能继续输入,然后计算该列表的和与平均值
(1)源代码

n = int(input("请输入奇数:"))
list1=[]
while len(list1) < 10:
    if n %2 != 0:
        list1.append(n)
    else:
        print("输入错误,请重新输入。")
    n = int(input("请输入奇数:"))
print("列表的和为:",sum(list1),"列表的平均值为:",sum(list1)/len(list1),list1)

(2)运行结果截图
在这里插入图片描述

4.请用字典编程,已知某班学生的姓名和成绩如下:
在这里插入图片描述

输出这个班的学生姓名和成绩,并求出全班同学的人数和平均分显示。
(1)源代码

name_grade = {"张三":45,"李四":78,"徐来":40,"沙思思":96,"如一":65,
              "司音":90,"赵敏":78,"张旭宁":99,"柏龙":60,"思琪":87}
list1 = list[name_grade.values()]
print(list1)
for key in name_grade.keys():
    print(key,name_grade[key])
n = len(name_grade)
avgscore = sum(name_grade.values()) / n
print("全班共有",n,"人,平均成绩为:",avgscore,"分。")

(2)运行结果截图
在这里插入图片描述
5.某家商店根据客户消费总额的不同将客户分为不同的类型。如果消费总额大于等于10万元,为铂金卡客户(platinum);如果消费总额大于等于5万元且小于10万元,为金卡客户(gold);如果消费总额大于等于3万元且小于5万元,为银卡客户(silver);如果消费总额小于3万元,为普卡客户(ordinary)。现有一批顾客的消费金额(单位:万元)分别为2.3,4.5,24,17,1,7,8,39,21,0.5,1.2,4,1,0.3,将消费金额存储在列表list1中,输出一个字典,分别以platinum,gold,silver,ordinary为键,以各客户类型人数为值。
(1)源代码

amount = float(input("请输入客户消费总额:"))
list_platinum = []
list_gold = []
list_silver = []
list_ordinary = []
while amount >= 0:
    if amount >= 10:
        list_platinum.append(amount)
    elif amount >= 5:
        list_gold.append(amount)
    elif amount >= 3:
        list_silver.append(amount)
    else:
        list_ordinary.append(amount)
    amount = float(input("请输入客户消费总额:"))
else:
    print("输入结束,统计数据。")
list1 = list_gold+list_silver+list_ordinary+list_platinum
amount1 = {"platinum":len(list_platinum),"gold":len(list_gold),"silver":len(list_silver),"ordinary":len(list_ordinary)}
print(amount1)

(2)运行结果截图
在这里插入图片描述

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

years = int(input("请输入入职年限为:"))
while years >= 0:
    while years >= 5:
        num = float(input("请输入销售业绩为:"))
        if num > 15000:
            coff = 0.2
        elif num > 10000:
            coff = 0.15
        elif num > 5000:
            coff = 0.1
        else:
            coff = 0.05
        award = float(coff) * num
        print("奖金为:", award)
        years = int(input("请输入入职年限为:"))
        num = float(input("请输入销售业绩为:"))
    else:
        if num <= 4000:
            coff = 0.01
        else:
            coff = 0.045
        award = float(coff) * num
        print("奖金为:", award)
        years = int(input("请输入入职年限为:"))
        num = float(input("请输入销售业绩为:"))
else:
    print("结束输入。")

(2)运行结果截图
在这里插入图片描述

7.输入5个整数放到列表list1中,输出下标及值,然后将列表list1中大于平均值的元素组成一个新列表list2,输出平均值和列表list2。请利用列表推导式解决该问题。
(1)源代码

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("平均值为:",avg,"list2为:",list2)

(2)运行结果截图
在这里插入图片描述

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

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

(2)运行结果截图
在这里插入图片描述

9.编写程序,给定列表[1,9,8,7,6,5,13,3,2,1],先输出原列表,删除其中所有奇数后再输出。请利用列表推导式解决该问题。
(1)源代码

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

(2)运行结果截图
在这里插入图片描述

10.百钱买百鸡:一只公鸡5元钱,一只母鸡3元钱,三只小鸡1元钱,现在要用100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?请利用列表推导式解决该问题。
(1)源代码

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

(2)运行结果截图

在这里插入图片描述

二、实验总结

(1)掌握python程序的书写规则;
(2)掌握赋值语句的基本格式及执行规则;
(3)掌握常用数据结构程序的设计方法。
其他(感悟、思考等)
我们要明确一点,学习编程不是一日之功,需要每天投入时间学习,也不可纸上谈兵,需要自己亲自操作,不动手就不会发现问题,动了手印象才会深刻,记得更靠。经过这次实验,我收获了很多,一方面学习到了许多以前没学过的专业知识与知识的应用,另一方面还提高了自我动手做项目的本事。在实验中我学到了许多新的知识。是一个让我把书本上的理论知识运用于实践中的好机会,原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。在这次实验中还锻炼了我其他方面的本事,提高了我的综合素质。


http://www.kler.cn/news/16834.html

相关文章:

  • vcruntime140_1.dll丢失的解决方法
  • 3个经典线程同步问题
  • 用ChatGPT通过WebSocket开发一个交互性的五子棋微信小程序(二)
  • ArduPilot之开源代码基础知识Threading概念
  • Vue3通透教程【十四】TS复杂类型详解(一)
  • MATLAB函数封装2:QT调用封装函数
  • 至少要吃掉多少糖果
  • HPDA的资料
  • 荔枝派Zero(全志V3S)制作 IMG 镜像文件
  • 兴寿镇“春踏青,兴寿行”特色旅游线路点靓辛庄
  • 【Python入门知识】NumPy数组迭代及连接
  • 2.rabbitMQ之交换机
  • 【SCI征稿】中科院2区SCI,CCF推荐,评职代表作首选快刊
  • LC正弦波振荡器【高频电子线路】【Multisim】
  • thread-最佳时间
  • BetaFlight统一硬件配置文件研读
  • PAT A1012 The Best Rank
  • iOS---iOS10适配iOS当前所有系统的远程推送
  • Ansible的基础了解
  • docker容器:本地私有仓库、harbor私有仓库部署与管理
  • 【Unity入门】24.碰撞检测
  • 滴水逆向三期笔记与作业——02C语言——02数据类型
  • JDBC详解(四):操作BLOB类型字段(超详解)
  • Python做个猫狗识别系统,给人美心善的邻居
  • matlab for循环详解
  • 其他自定义代码片段
  • 设计模式--装饰者模式
  • JSP+Struct+MySql基于BBS管理系统设计与实现(源代码+论文+中英资料+开题报告+答辩PPT)
  • Java 怎样实现代理模式,有什么优缺点
  • ospf扩展配置—认证、沉默接口、加快收敛、缺省路由