python测试题:请设计一个图书类Book,包括书号(num),书名(name),出版日期(Date) 从键盘输入图书册数n,接着输入n个图书信息,按书名排序输出所有图书信息

题目:

请设计一个图书类Book,包括书号(num),书名(name),出版日期(Date)
从键盘输入图书册数n,接着输入n个图书信息,按书名排序输出所有图书信息

思路:
首先肯定是先创建一个book类

class book():

    def __init__(self,num,name,date):
        self.num=num
        self.name=name
        self.date=date
   
   def write(self):
        print(self.num,self.name,self.date)
    pass

之后从键盘录入数据
但是到这里出现了一个问题

n=int(input("请输入n:"))

for i in range(n):
    shuming=input("shuming:")
    shuhao=input("shuhao:")
    riqi=input("riqi:")

数据录入了之后怎么传到book里呢?
直接传?

book(shuhao,shuming,riqi)

这样怎么输出?
老师说要把book(shuhao,shuming,riqi)放进一个列表…
然后呢?
我觉得这种方法做不出来…

改变思路

能不能根据我的需要动态创建变量
让创建的变量=book(shuhao,shuming,riqi)
这样就可以用创建的变量.write来输出结果了

这样,我改进了传入数据的过程

creat=locals()
for i in range(n):
    shuming=input("shuming:")
    shuhao=input("shuhao:")
    riqi=input("riqi:")
    creat[shuming] = book(shuhao,shuming,riqi)

这样,我把每本书的名字都做成了一个变量。
然后我还需要记录这些书名

creat=locals()
mingzi=[]
n=int(input("请输入n:"))
for i in range(n):
    shuming=input("shuming:")
    shuhao=input("shuhao:")
    riqi=input("riqi:")
    creat[shuming] = book(shuhao,shuming,riqi)
    mingzi.append(shuming)

接下来按字典序排序

mingzi.sort()

输出即可

for i in range(n):
    creat[mingzi[i]].write()

完整代码:

"""
请设计一个图书类Book,包括书号(num),书名(name),出版日期(Date)
从键盘输入图书册数n,接着输入n个图书信息,按书名排序输出所有图书信息
"""
class book():
    def __init__(self,num,name,date):
        self.num=num
        self.name=name
        self.date=date  
    def write(self):
        print(self.num,self.name,self.date)
creat=locals()
mingzi=[]
n=int(input("请输入n:"))
for i in range(n):
    shuming=input("书名(支持中文):")
    shuhao=input("书号:")
    riqi=input("日期(示例:2020.11.5):")
    creat[shuming] = book(shuhao,shuming,riqi)
    mingzi.append(shuming)
mingzi.sort()
for i in range(n):
    creat[mingzi[i]].write()

小小吐槽
date居然还要做成类?直接字符串 2020.11.5 不好吗?
这20分我不要了

你可能感兴趣的:(python)