数据结构

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

一、实验内容

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()) / nprint("全班共有",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_platinumamount1 = {"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.2elif num > 10000:coff = 0.15elif num > 5000:coff = 0.1else:coff = 0.05award = float(coff) * numprint("奖金为:", award)years = int(input("请输入入职年限为:"))num = float(input("请输入销售业绩为:"))else:if num <= 4000:coff = 0.01else:coff = 0.045award = float(coff) * numprint("奖金为:", 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)掌握常用数据结构程序的设计方法。
其他(感悟、思考等)
我们要明确一点,学习编程不是一日之功,需要每天投入时间学习,也不可纸上谈兵,需要自己亲自操作,不动手就不会发现问题,动了手印象才会深刻,记得更靠。经过这次实验,我收获了很多,一方面学习到了许多以前没学过的专业知识与知识的应用,另一方面还提高了自我动手做项目的本事。在实验中我学到了许多新的知识。是一个让我把书本上的理论知识运用于实践中的好机会,原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。在这次实验中还锻炼了我其他方面的本事,提高了我的综合素质。