#实验报告一 序列结构
##一、实验学时:2学时
##二、实验目的
- 掌握:Python常用内置对象-列表、元组、字典、集合。
- 掌握运算符和内置函数对列表、元组、字典、集合的操作。
- 理解列表推导式、生成器表达式的工作原理。
- 掌握切片操作。
- 掌握序列解包的用法。
##三、实验内容
- 编写程序,用一个变量存储以下信息:学号,姓名,所在学院,专业名称。
- 编写程序,用一个变量存储你所在小组的组员名单。
- 对组员名单进行操作,如增加一个同学,减少一个同学,修改一个同学的姓名。
- 编写程序,录入小组成员的姓氏,利用集合输出小组中的所有姓氏。
- 编写程序,用一个变量存储组员名单,组员Python成绩,计算组员总人数,总分,平均分。
- 编写程序,用一个变量存储组员成绩,要求有低于60的成绩,利用列表推导式,筛选出低于60分的成绩。
- 编写程序,利用列表推导式将列表中的整数提取出来[123, ‘hello’, (1,2), 456, {23}, {‘a’:789}]。
- 利用生成器表达式生成0~9的数值,要求每一个数值乘以你的幸运数字,最后将生成器对象转换成列表,输出列表的结果。
- 给定一个列表member0 = [“今天”,“天气”,“真好”],要求通过insert()方法和切片两种方案,把列表member0变成member1 = [“今天”,“的”,“天气”,“是”,“真好”,“呀”]。
- 现有一购物车列表如下:
carts=[{"name":"床", "price":1999, "num":1}, {"name":"枕头", "price":10,"num":2}, {"name":"被子", "price":20, "num":1}]
要求通过用户输入总资产,例如:3000,然后显示购物车列表,计算购物车商品总金额,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
##四、实验结果
- 编写程序,用一个变量存储以下信息:学号,姓名,所在学院,专业名称。
#程序名:main.py
#功 能:用一个变量存储学生的基本信息
#作 者:********
#学 号:********
#日 期:2023.3.6
#思 路:用列表a存储用户输入提示字,用for语句遍历列表a,
# 用input()函数实现对应信息的输入并存入字典b中,最后使用
# print函数将字典b打印下来
a=['学号','姓名','所在学院','专业名称']#列表a中存入输入提示词
b={}#用于存储学生的基本信息
for i in a:
b[i] = input('请输入{0}:'.format(i))#对学生各项信息进行输入
print(b)#输出学生的基本信息
运行截图:略
2. 编写程序,用一个变量存储你所在小组的组员名单。
#程序名:2.py
#功 能:将小组成员的姓名存入一个列表里
#作 者:********
#学 号:********
#日 期:2023.3.6
#思 路:先确定输入成员人数,在用for语句和input()对每个成员姓名
# 进行输入并存入列表s中,最后输出列表s
n=int(input("请输入小组人数:"))#输入小组人数
s=[]#存储小组成员姓名
for i in range(n):
s.append(input("请输入成员姓名:"))#输入信息
print("成员的姓名分别为:",s)#输出成员姓名
运行截图:
- 对组员名单进行操作,如增加一个同学,减少一个同学,修改一个同学的姓名。
#程序名:3.py
#功 能:实现对组员名单进行操作
#作 者:********
#学 号:********
#日 期:2023.3.6
#思 路:先录入原成员姓名,用while语句和if语句实现执行不同的操作
n=int (input("请输入小组人数:"))
s=[]
for i in range(n):
s.append(input("请输入成员姓名:"))#输入原成员姓名
print(s)
while True:
u=int(input("选择你要执行的操作:\n"
"输入1增加一个同学\n"
"输入2删除一个同学\n"
"输入3修改一个同学的姓名\n"
"输入0结束操作\n"))#输入不同的数,执行不同的操作
if u==1:
s.append(input("请输入要增加的同学的姓名:"))
print("学生名单为:",s)#添加一个同学的姓名
elif u==2:
s.remove(input("请输入要删除的同学的姓名:"))
print("学生名单为:",s)#删除一个同学的姓名
elif u==3:
v=s.index(input("请输入要修改的同学的名字:"))
s[v]=input("修改为:")
print("学生名单为:",s)#修改一个同学的姓名
elif u==0:
print("学生名单为:",s)
break
运行截图:
- 编写程序,录入小组成员的姓氏,利用集合输出小组中的所有姓氏。
#程序名:4.py
#功 能:录入小组成员的姓氏,利用集合输出小组中的所有姓氏
#作 者:********
#学 号:********
#日 期:2023.3.6
#思 路:录入小组成员的姓氏存入集合中,print()输出小组中的所有姓氏
s=set(input("请输入小组成员的姓氏:").split())#录入小组成员的姓氏存入集合中
print("小组成员的姓氏分别为:",s)#输出
运行截图:
- 编写程序,用一个变量存储组员名单,组员Python成绩,计算组员总人数,总分,平均分。
#程序名:5.py
#功 能:用一个变量存储组员名单,组员Python成绩,计算组员总人数,总分,平均分。
#作 者:********
#学 号:********
#日 期:2023.3.6
#思 路:输入组员成绩,用len(),sum()函数求总人数和总成绩,在求得平均成绩
a=input("请输入小组成员姓名:").split()
b=[]
for i in a:
b.append(int(input("请输入{}的成绩:".format(i))))#输入每个同学的成绩
print("小组人数为",len(a),"总分为:",sum(b),"平均分为:",sum(b)//len(b))#输出总人数,总成绩,平均成绩
运行截图:
- 编写程序,用一个变量存储组员成绩,要求有低于60的成绩,利用列表推导式,筛选出低于60分的成绩。
#程序名:6.py
#功 能:筛选出低于60分的成绩。
#作 者:********
#学 号:********
#日 期:2023.3.6
#思 路:用列表推导式筛选出低于60分的成绩。
a=list(map(int,input("请输入学生的成绩").split()))#输入成绩
b=[i for i in a if i < 60]#筛选
print("低于60分的成绩有:",b)#输出
运行截图:
- 编写程序,利用列表推导式将列表中的整数提取出来[123, ‘hello’, (1,2), 456, {23}, {‘a’:789}]。
#程序名:7.py
#功 能:将列表中的整数提取出来
#作 者:********
#学 号:********
#日 期:2023.3.6
#思 路:用列表推导式将列表中的整数提取出来
a=[123, 'hello', (1,2), 456, {23}, {'a':789}]
print([i for i in a if type(i)==int])#将列表中的整数提取出来
运行截图:
- 利用生成器表达式生成0~9的数值,要求每一个数值乘以你的幸运数字,最后将生成器对象转换成列表,输出列表的结果。
#程序名:8.py
#功 能:用生成器生成符合条件的列表
#作 者:********
#学 号:********
#日 期:2023.3.6
#思 路:利用生成器表达式生成0~9的数值,每一个数乘以幸运数字,再转换成
# 列表并输出
a=int(input("请输入你的幸运数字:"))#输入幸运数字
g=(i*a for i in range(10))#生成器表达式生成数值
g=list(g)#转换成列表
print("生成的列表为:",g)
运行截图:
- 给定一个列表member0 = [“今天”,“天气”,“真好”],要求通过insert()方法和切片两种方案,把列表member0变成member1 = [“今天”,“的”,“天气”,“是”,“真好”,“呀”]。
# 程序名:9.py
# 功 能:将列表member0变成为列表member1
# 作 者:********
# 学 号:********
# 日 期:2023.3.6
# 思 路:用insert()方法或切片操作实现将列表member0变成为列表member1
member0 = ["今天","天气","真好"]
print(member0)
member0.insert(1,'的')
member0.insert(3,'是')
member0.insert(5,'呀')#insert()方法插入三个字
print('insert()方法:',member0)#输出
member0 = ["今天","天气","真好"]
print(member0)
member0[1:1]=['的']
member0[3:3]=['是']
member0[5:5]=['呀']#切片操作插入三个字
print('切片方法:',member0)
运行截图:
- 现有一购物车列表如下:
carts=[{"name":"床", "price":1999, "num":1}, {"name":"枕头", "price":10,"num":2}, {"name":"被子", "price":20, "num":1}]
要求通过用户输入总资产,例如:3000,然后显示购物车列表,计算购物车商品总金额,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
#程序名:10.py
#功 能:判断是否有足够的资产清空购物车
#作 者:********
#学 号:********
#日 期:2023.3.6
#思 路:输入总资产,计算所需资金,用if判断输出结果
a=int(input("请输入总资产:"))
if a>=1999+2*10+20*1:
print("购买成功")#如果总资产大于或等于所需资金则输出购买成功
else :
print("账户余额不足")#否则输出账户余额不足
运行截图:
##五、实验小结
问题与解决办法:
- 问题:编译出错,提示:SyntaxError: invalid syntax。
解决办法:判断语句的嵌套不能使用else if只能使用elif。
- 问题:不知道如何循环输入数据并执行判断操作。
解决办法:可以在此段程序前加上while(True)语句便可无限循环执行判断操作。
- 问题:不知道如何通过切片操作实现列表的插入。
解决办法:查找资料后得知,将冒号左右的参数设置成同一个下标即可实现。
- 问题:不知道如何实现一行数据输入。
解决办法:input()与split()函数结合使用即可实现。
心得体会:
-
多翻阅Python书籍有利于对语法的进一步掌握。
-
我们应当养成自主学习的习惯,提高自己搜索信息的能力,利用好网络带给我们的便利。
-
有自己难以解决的问题,要积极向老师同学请教。
-
Python学习需要不仅需要扎实的语法基础,还需要充足的实践。
在这里插入代码片