Python-习题练习(截至20180803)

这篇博客包含了多个Python编程实战题目,涉及面向对象设计、字符串处理、列表操作、文件及目录操作、递归算法等。内容包括添加删除学生、歌词解析、统计字符类型、计算数字阶乘、实现终端计算器、号码归属地查询等,旨在提升Python编程技能。
摘要由CSDN通过智能技术生成

(1)python 实现向班级中添加学生、删除学生、查看学生、按照指定条件排序(使用面向对象的思想):

设计一个学生类
属性:姓名、学号、年龄、成绩
设计一个班级类
属性:班级代号,所有学生
要求:实现向班级中添加学生、删除学生、查看学生、按照指定条件排序
#实现向班级中添加学生、删除学生、查看学生、按照指定条件排序

class Student:                                              #定义学生类
    def __init__(self,name,school_num,age,grade):
        self.name = name
        self.school_num = school_num
        self.age = age
        self.grade = grade

    def __getitem__(self, item):                            #使其能够通过下标获取值
        return self.__dict__.get(item)

class Banji:                                                #定义班级类
    def __init__(self,num,lt):                              #lt为一个列表
        self.num = num
        self.lt = lt
    def add(self,student):                                  #增加学生方法
        self.lt.append(student)
    def shanchu(self,student):                              #删除学生方法
         self.lt.remove(student)
    def see_student(self,num,key):                          #查看学生,num为名字或学号等,key为num的类型
        for i in range(len(self.lt)):
            if num == self.lt[i][key]:
                break
        print("姓名:{},学号:{},年龄:{},成绩:{}".format(self.lt[i].name,self.lt[i].school_num,self.lt[i].age,self.lt[i].grade))
    def paixv(self,key):                                    #对学生进行排序,key为排序标准,比如按成绩排序
        for i in range(len(self.lt) - 1):
            for j in range(len(self.lt) - 1 - i):
                if self.lt[j][key] > self.lt[j + 1][key]:
                    t = self.lt[j]
                    self.lt[j] = self.lt[j + 1]
                    self.lt[j + 1] = t


#测试代码
student = Student('mao',14,18,100)
student1 = Student('chen',15,17,99)
student3 = Student('shang',22,23,99)
test = Banji(302,[])
test.add(student)
test.add(student1)
test.add(student3)
#test.shanchu(student)
#test.see_student('xynu')
#print(test.lt)
print(test.lt[1].age)
test.paixv('age')
#print(test.lt[0].age)
print(test.lt[1].age)
test.see_student('mao','name')
#test.see_student(15,'school_num')

(2)python 将歌词解析封装成类,要求:提供一个方法(根据时间返回歌词)(面向对象思想)

#将歌词解析封装成类,要求:提供一个方法(根据时间返回歌词)

class Song:                                 #定义歌词类
    def __init__(self,song):
        self.song = song

class Song_jiexi:                           #定义歌词解析函数
    def __init__(self,song_word):
        self.song_word = song_word
    def chazhao_time(self,t):
        # 准备一个字典,用来保存歌曲信息
        song_dict = {}

        # 准备一个字典,用来保存歌词信息
        lrc_dict = {}

        # 按照换行进行切割
        str_list = (self.song_word.song).splitlines()

        # 遍历处理
        for string in str_list:
            # 判断是否是歌词信息
            if string[1].isdecimal():
                # [02:11.55][01:50.60][00:22.63]穿过幽暗的岁月
                # 按照']'进行切割
                lrc_list = string.split(']')
                # 提取歌词信息
                lrc_info = lrc_list[-1]
                # 提取时间信息
                time_info = lrc_list[:-1]
                # 遍历处理时间信息
                for time_str in time_info:
                    # [00:00.70
                    # 去掉左边的'['
                    time_str = time_str[1:]
                    # 00:00.70
                    # 按照':'进行切割
                    time_info_list = time_str.split(':')
                    # 提取分钟
                    time_min = float(time_info_list[0])
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值