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

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

Python语言程序设计实验2022春季

实验报告一:Python序列结构

姓名:郭家义 班级:22-6班

实验一:Python序列结构

一、实验学时: 2学时

二、实验目的

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

三、实验内容

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

carts=[{"name":"床", "price":1999, "num":1}, {"name":"枕头", "price":10,"num":2}, {"name":"被子", "price":20, "num":1}]

要求通过用户输入总资产,例如:30003000,然后显示购物车列表,计算购物车商品总金额,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。

四、实验结果

1.编写程序,用一个变量存储以下信息:学号,姓名,所在学院,专业名称。
class student:#创建学生类
    def __init__(self, num, name, academy, major):#定义初始化函数
        self.num = num
        self.name = name
        self.academy = academy
        self.major = major
s1 = student("0001", "zhangsan", "软件学院", "软件工程")#定义学生s1,输入学生信息
print(s1.num+":"+s1.name+" "+s1.academy+" "+s1.major)
copy
运行结果截图:

图片描述

2.编写程序,用一个变量存储你所在小组的组员名单。
class student:#创建学生类
    def __init__(self, num, name, academy, major):#定义初始化函数,每个函数第一个函数都是self
        self.num = num
        self.name = name
        self.academy = academy
        self.major = major
class group:#创建类group
    def __init__(self):
        self.member = []
    def add_member(self, *args):
        for s in args:#args(元组)可以接受任意多的函数
            st = student(s.num, s.name, s.academy, s.major)
            self.member.append(st)

s1 = student("0001", "zhangsan", "软件学院", "软件工程")
s2 = student("0002", "lisi", "软件学院", "软件工程")
s3 = student("0003", "wangwu", "软件学院", "软件工程")

group_list = group()#创建列表
group_list.add_member(s1, s2, s3)
for m in group_list.member:#列表索引
    print(m.num+":"+m.name+" "+m.academy+" "+m.major)#输出学生名单信息
copy
运行结果截图:

图片描述

3.对组员名单进行操作,如增加一个同学,减少一个同学,修改一个同学的姓名。
class student:#创建学生类
    def __init__(self, num, name, academy, major):#定义初始化函数,每个函数第一个函数都是self
        self.num = num
        self.name = name
        self.academy = academy
        self.major = major
class group:#创建类group
    def __init__(self):
        self.member = []
    def add_member(self, *args):
        for s in args:#args(元组)可以接受任意多的函数
            st = student(s.num, s.name, s.academy, s.major)
            self.member.append(st)
    def alter_name(self,position,name):#定义position参数
        self.member[position-1].name = name

s1 = student("0001", "zhangsan", "软件学院", "软件工程")
s2 = student("0002", "lisi", "软件学院", "软件工程")
s3 = student("0003", "wangwu", "软件学院", "软件工程")

group_list = group()
group_list.add_member(s1, s2, s3)

s4 = student("0004","zhaoliu","软件学院","软件工程")
group_list.add_member(s4)

group_list.alter_name(position=1,name="new zhangsan")#修改第一位同学的姓名
for m in group_list.member:#列表索引
    print(m.num+":"+m.name+" "+m.academy+" "+m.major)#输出学生名单信息
copy
运行结果截图:

图片描述

4.编写程序,录入小组成员的姓氏,利用集合输出小组中的所有姓氏。
name_list = input("请输入小组成员的姓氏:")
name_set = set(name_list.split(" "))
print("小组成员的姓氏有:")
for name in name_set:
    print(name, end=" ")
copy
运行结果截图:

图片描述

5.编写程序,用一个变量存储组员名单,组员Python成绩,计算组员总人数,总分,平均分。
name = {"zhangsan","lisi","wangwu"}
grade = {80,90,95}

s = dict(zip(name,grade))#创建dict,用zip将元素打包

print("组员总人数:",len(s))
print("总分:",sum(s.values()))
print("平均分: %0.2f" %(sum(s.values())/len(s)))
copy
运行结果截图:

图片描述

6.编写程序,用一个变量存储组员成绩,要求有低于60的成绩,利用列表推导式,筛选出低于60分的成绩。
name = {"zhagnsan", "lisi", "wagnwu"}
grade = {50, 70, 80}

s = dict(zip(name,grade))

grade = list(s.values())#列表推导式
grade1 = [ i for i in grade if i<60]

print("低于六十分的成绩有:",grade1)
copy
运行结果截图:

图片描述

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

print("列表中的整数有:" ,[i for i in values if type(i)==int])#type()校验数据类型
copy
运行结果截图:

图片描述

8.利用生成器表达式生成0~9的数值,要求每一个数值乘以你的幸运数字,最后将生成器对象转换成列表,输出列表的结果。
iterator = (i*3 for i in range(10))#创建生成器
to_list = []#转换成列表
for num in iterator:
    to_list.append(num)
print(to_list)#输出列表结果
copy
运行结果截图:

图片描述

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

member0[1:1] = "的"
member0[3:3] = "是"
member0[5:5] = "呀"
member1 = member0
print(member1)
copy
运行结果截图:

图片描述

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

money = int(input("请输入您的总资产:"))
print (carts)#显示购物车列表
total_money = (1999*1+10*2+20*1)
if total_money>money:#计算是否可以购买
    print("账户余额不足")
else:
    print("购买成功")
copy
运行结果截图:

图片描述

五、实验小结

问题与解决办法:

1.编译出错,提示SyntaxError: invalid syntax. Perhaps you forgot a comma?

解决办法:语法有错,在写列表时,列表之间忘使用了逗号

2.问题:不能熟练使用切片的方法

解决办法:在查询资料后,进一步掌握了切片的使用方法

3.问题:在编译过程中,容易将中英文输入法没进行调整

心得体会:

1.在写代码时,要经行注释,便于他人理解,也便于自己查找错误。

2.在写代码时,一定要注意区分中英文。

3.在遇到不懂的问题时,先独立思考后,再去查找相关资料以及询问同学老师。

最新评论

第4题,最终输出形式是集合。

2023-03-16 22:54:30
回复