“Python 语言程序设计实验2023春季”实验报告

实验报告一 Python序列结构 截止时间3月8日

实验报告一 Python序列结构

一、实验学时: 2学时

二、实验目的

  1. 掌握:Python常用内置对象-列表、元组、字典、集合。
  2. 掌握运算符和内置函数对列表、元组、字典、集合的操作。
  3. 理解列表推导式、生成器表达式的工作原理。
  4. 掌握切片操作。
  5. 掌握序列解包的用法。

三、实验内容

  1. 编写程序,用一个变量存储以下信息:学号,姓名,所在学院,专业名称。
  2. 编写程序,用一个变量存储你所在小组的组员名单。
  3. 对组员名单进行操作,如增加一个同学,减少一个同学,修改一个同学的姓名。
  4. 编写程序,录入小组成员的姓氏,利用集合输出小组中的所有姓氏。
  5. 编写程序,用一个变量存储组员名单,组员Python成绩,计算组员总人数,总分,平均分。
  6. 编写程序,用一个变量存储组员成绩,要求有低于 60 60的成绩,利用列表推导式,筛选出低于 60 60分的成绩。
  7. 编写程序,利用列表推导式将列表中的整数提取出来[123, 'hello', (1,2), 456, {23}, {'a':789}]。
  8. 利用生成器表达式生成0~9的数值,要求每一个数值乘以你的幸运数字,最后将生成器对象转换成列表,输出列表的结果。
  9. 给定一个列表member0 = ["今天","天气","真好"],要求通过insert()方法和切片两种方案,把列表member0变成member1 = ["今天","的","天气","是","真好","呀"]。
  10. 现有一购物车列表如下: carts=[{"name":"床", "price":1999, "num":1}, {"name":"枕头", "price":10,"num":2}, {"name":"被子", "price":20, "num":1}] copy 要求通过用户输入总资产,例如: 3000 3000,然后显示购物车列表,计算购物车商品总金额,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。

四、实验结果

  1. 编写程序,用一个变量存储以下信息:学号,姓名,所在学院,专业名称。
    #程序名:test1
    #功能:学生信息储存
    #作者:张文博
    #学号:20222501266
    #日期:2023.3.7
    #思路:用__init__创建初始化对象,结合信息输出存储的信息。
    class student:
     def __init__(a,l,n,w,z):
         a.num = l
         a.name = n
         a.where = w
         a.major = z
    s = student("250","小明","软件学院","软件工程")
    print(s.num+" "+s.name+" "+s.where+" "+s.major)
    
    copy
    运行截图 图片描述

2.编写程序,用一个变量存储你所在小组的组员名单。

#思路:用一个变量存储组员名单后输出
m =["组员名单:赵,钱,松,李"]
print(m)
copy

运行截图

图片描述

3.对组员名单进行操作,如增加一个同学,减少一个同学,修改一个同学的姓名。

#思路:用input输入组员名单,再用split将字符串切片转换成列表,要增加的同学用append在末尾加元素,用pop移除元素
L = input("请输入组员名单:")
X = list(L.split())
print("小组成员有:",X)
name1 = input("请输入要增加的同学:")
X.append(name1)-
print("增加后的名单:",X)
name2 = int(input("请输入要减少的同学的序号:"))
X.pop(name2 - 1)
print("减少后的名单为:",X)
name3 = int(input("请输入要修改小组成员序号:"))
name4 = input("请输入要增加的同学姓名:")
X[name3-1] = name4
print("最终修改名单:",X)
copy

运行截图 图片描述 4.编写程序,录入小组成员的姓氏,利用集合输出小组中的所有姓氏。

#思路:使用input输入,利用set创建集合并用split将切片转换为列表
n1 = input("请输入姓氏:")
n2 = set(n1.split(" "))
print("输出小组成员姓氏:")
for name in n2:
    print(name,end=" ")
copy

运行截图

图片描述

5.编写程序,用一个变量存储组员名单,组员Python成绩,计算组员总人数,总分,平均分。

#思路:通过dict字典和zip搭配存储成员成绩和姓名,利用字典里的操作len,sum等算出各种分数
name ={"张","钱","孙"}
grade = {78,98,84}
x = dict(zip(name,grade))
print("组员总人数:",len(x))
print("总分:",sum(x.values()))
print("平均分:%0.2f" %(sum(x.values())/len(x)))
copy

运行截图 图片描述

6.编写程序,用一个变量存储组员成绩,要求有低于 60 60的成绩,利用列表推导式,筛选出低于 60 60分的成绩。

#思路:通过dict字典操作,再利用列表推导式筛选出分数不及格的。
name = {"小明","小红","小刚","李华"}
grade = {87, 92, 74, 36}
s = dict(zip(name,grade))
garde = list(s.values())
m= [i for i in grade if i<60]
print("低于60分的成绩:",m)
copy

运行截图

图片描述

7.编写程序,利用列表推导式将列表中的整数提取出来[123, 'hello', (1,2), 456, {23}, {'a':789}]。

#思路:用列表推导式和type筛选出int类型的后输出。
alist = [123,'hello',(1,2),456,{23},{'a':789}]
alist = [x for x in alist if type(x) == int]
print(alist)
copy

运行截图 图片描述

8.利用生成器表达式生成0~9的数值,要求每一个数值乘以你的幸运数字,最后将生成器对象转换成列表,输出列表的结果。

#思路:用生成器表达式计算乘以计算结果,然后创建空列表,用append添加到空列表然后输出结果。
a=[]
x = (i*14 for i in range(10))
for n in x:
    a.append(n)
print(a)
copy

运行截图 图片描述

9.给定一个列表member0 = ["今天","天气","真好"],要求通过insert()方法和切片两种方案,把列表member0变成member1 = ["今天","的","天气","是","真好","呀"]。

#使用insert方法
member1 = ["今天","天气","真好"]
member1.insert(1,"的")
member1.insert(3,"是")
member1.insert(5,"呀")
member = member1
print("插入后的结果:",member1)
copy

运行截图 图片描述

#使用切片方法
member2 = ["今天","天气","真好"]
member2[1:1]=["的"]
member2[3:3]=["是"]
member2[5:5]=["呀"]
member = member2
print("插入后的结果:",member)
copy

运行截图 图片描述

10.现有一购物车列表如下: carts=[{"name":"床", "price":1999, "num":1}, {"name":"枕头", "price":10,"num":2}, {"name":"被子", "price":20, "num":1}] 要求通过用户输入总资产,例如: 3000 3000,然后显示购物车列表,计算购物车商品总金额,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。

#思路:利用input输入资产,之后利用字典item返回遍历元组,用n表示总价,累加即为三个物品的总价,然后进行比较解决问题。
a=int (input("输入你的资产:"))
carts=[{"name":"床", "price":1999, "num":1}, {"name":"枕头", "price":10,"num":2}, {"name":"被子", "price":20, "num":1}]
print(carts)
b = 0
for i in range(len(carts)):
    for x,y in carts[i].items():
        n= (carts[i])['price']*(carts[i])['num']
    b=b+n
if b>a:
    print("余额不足")
else:
    print("购买成功")
copy

运行截图 图片描述

五、实验小结

问题与解决方法:

1.编译出错,提示Traceback (most recent call last): File "D:\python\ok\test3.py", line 8, in X.pop(name2 - 1) IndexError: pop index out of range 解决方法:输入错误,在输入三个名称的时候中间不加逗号。

2.问题:内置函数的使用不太清楚,for循环的使用不了解 解决方法:翻看课本,询问同学

3.问题:对切片运用不熟练。 解决方法:多次编译切片相关代码。

心得体会:

1.掌握熟悉了Python常用内置函数,列表,元组,集合。

2.熟悉了字典的使用方法。

3.理解熟悉列表推导式、生成器表达式的工作原理。

4.掌握了切片和序列解包的操作。

最新评论

实验报告完整,格式规范,程序内容整体符合题目要求,运行结果合理。

2023-09-01 15:35:08
回复