我的python实验报告二

#实验报告二 Python序列结构
##一、实验目的
1. 掌握:Python常用内置对象-列表、元组、字典、集合。

2. 掌握运算符和内置函数对列表、元组、字典、集合的操作。

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

4. 掌握切片操作。

5. 掌握序列解包的用法。

##二、实验内容

1. 编写程序,用一个变量存储以下信息:学号,姓名,所在学院,专业名称。

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

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

4. 编写程序,录入小组成员的姓氏,利用集合输出小组中的所有姓氏。

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

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

7. 产生两个随机数x,y,要求0<x<y<组员长度.输出组员成绩[x:y]切片的成绩。

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

9. 复制一段文章或者论文,利用字典统计出每个字出现的次数。

10. 棋盘一共64个小格子,第一个格子放一粒米,第二个2粒米,第三个4粒米,第四个8粒米,以此类推一直把64个格子放满需要多少粒米?要求使用列表推导式和内置函数进行计算。

##三、实验结果

1. 编写程序,用一个变量存储以下信息:学号,姓名,所在学院,专业名称。

代码如下:

#学号,姓名,所在学院,专业名称
class student:
    def __init__(self,num,name,where,major):
        self.num = num
        self.name = name
        self.where = where
        self.major = major
s = student("1", "你好", "软件学院", "软件工程")
print(s.num+ "," + s.name + "," + s.where + "," + s.major)

实验结果如下:
图片描述

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

代码如下:

#1,张三,软件学院,软件工程
#2,李四,软件学院,软件工程
#3,王五,软件学院,软件工程
class student:
    def __init__(self, num, name, academy, major):
        self.num = num
        self.name = name
        self.academy = academy
        self.major = major
class group:
    def __init__(self):
        self.member = []
    def add_member(self, *args):
        for s in args:
            st = student(s.num, s.name, s.academy, s.major)
            self.member.append(st)

s1 = student("1", "张三", "软件学院", "软件工程")
s2 = student("2", "李四", "软件学院", "软件工程")
s3 = student("3", "王五", "软件学院", "软件工程")

print("小组成员名单如下:")
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)

实验结果如下:
图片描述

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

代码如下:

#3. 对组员名单进行操作,如增加一个同学,减少一个同学,修改一个同学的姓名。
L = input("请输入小组成员:")
L0 = list(L.split())
print("小组成员有:",L0)

name1 = input("请输入要增加的小组成员:")
L0.append(name1)
print("增加后的结果为:",L0)

name2 = int(input("请输入要删除的小组成员位置:"))
L0.pop(name2 -1)
print("删除后的结果为:",L0)

name3 = int(input("请输入要修改的小组成员位序:"))
name4 = input("请输入要增加的小组成员:")
L0[name3 -1] = name4
print("修改后的结果为:",L0)

实验结果如下:

图片描述

4. 编写程序,录入小组成员的姓氏,利用集合输出小组中的所有姓氏。

代码如下:

name_list = input("请输入小组成员的姓氏:")
name_set = set(name_list.split(" "))
print("小组成员的姓氏有:")
for name in name_set:
    print(name, end=" ")

实验结果如下:
图片描述

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

代码如下:

#5. 编写程序,用一个变量存储组员名单,组员Python成绩,计算组员总人数,总分,平均分。
name0 = {"李华", "聪明", "英才"}
grade0 = {40, 60, 30}

s = dict(zip(name0,grade0))

print("组员总人数为:", len(s))
print("组内总分为:", sum(s.values()))
print("组内平均分为:%0.2f" %(sum(s.values())/len(s)))

实验结果如下:
图片描述

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

代码如下:

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

name0 = {"李华", "聪明", "英才"}
grade0 = {40, 60, 30}

s = dict(zip(name0,grade0))

grade = list(s.values())
grade1 = [ i for i in grade if i<60]

print("低于六十分的成绩有:",grade1)

实验结果如下:
图片描述

7. 产生两个随机数x,y,要求0<x<y<组员长度.输出组员成绩[x:y]切片的成绩。

代码如下:

#7. 产生两个随机数x,y,要求0<x<y<组员长度.输出组员成绩[x:y]切片的成绩。

grade = [40, 60, 30, 70, 90, 20]

import random

x = random.randint(1, 5)
y = random.randint(0, 4)

print("组员成绩[x:y]切片的成绩为:", grade[x:y])

实验结果如下:
图片描述

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

代码如下:

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

n = int(input("请输入你的幸运数字:"))
s = list(i*n for i in range(0, 10))
print(s)

实验结果如下:
图片描述

9. 复制一段文章或者论文,利用字典统计出每个字出现的次数。

代码如下:

text = input("请输入一句话:")

m = dict()
for i in text:
    if i.isalpha():
        if i in m:
            m[i] += 1
        else:
            m[i] = 1
print(m)

实验结果如下:
图片描述

10. 棋盘一共64个小格子,第一个格子放一粒米,第二个2粒米,第三个4粒米,第四个8粒米,以此类推一直把64个格子放满需要多少粒米?要求使用列表推导式和内置函数进行计算。

代码如下:

s = [2**n for n in range(0,64)]
m = sum(s)
print(f"一直把64个格子放满需要{m}粒米")

实验结果如下:
图片描述

##四、实验结果
问题和解决办法:

  1. student() takes no arguments
    使用对象时,
    class student:
    def init(self,obj):

下划线要左右分别打两个,否则会出现类型错误
TypeError: student() takes no arguments
系统将”init“识别成”int“,有类型争议

  1. 在列表中的,增加数据—append(),
    删除数据—pop()

  2. 对于字典,有values()可提取“值”,zip()可将两个列表合成一个字典。

心得体会:

  1. 需要掌握常用内置函数的用法;

  2. 在学习过程中应当尤其注重函数参数与函数功能之间关系的理解。

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值