基于图书馆出书的程序设计

2024-10-01 09:16:15 发布

您现在位置:Python中文网/ 问答频道 /正文

霍格沃茨魔法学校的图书馆已经把图书发行过程计算机化了。相关信息以文本形式从标准输入中提供,分为三部分:关于书籍的信息、关于借贷者的信息和关于结账的信息。每个部分都有一个特定的行格式,如下所述。在

有关书籍的信息 行格式:登录号~标题

借款人信息 行格式:用户名~全名

有关签出的信息 行格式:用户名~登录号~截止日期 年月日格式为年月日。在

您可以假设数据在内部是一致的。每次结账时,输入数据中都有相应的用户名和登录号,没有一本书是由两个人同时签出的。 输入的每个部分都以包含一个关键字的行开始。第一部分以一行书开始。第二部分从包含借款人的行开始。第三部分以包含签出的行开始。输入的结尾由一行包含EndOfInput标记。 编写一个Python程序来读取上述数据,并打印出有关已签出书籍的详细信息。每行应按以下格式描述当前发行的一本书: 截止日期~全名~登录号~标题 你的输出应该按到期日的递增顺序排序。对于同一日期到期的书籍,按全名的升序排序。 下面是一个示例输入及其相应的输出。 样本输入 书籍APM-001~高级药剂制造GWG-001~与食尸鬼一起游荡APM-002~高级药剂制造DMT-001~防御魔法理论DMT-003~防御魔法理论GWG-002~与食尸鬼游牧DMT-002~防御魔法理论借用者SLY2301~汉娜·阿伯特SLY2302~尤安·阿伯克龙比SLY2303~斯图尔特·阿克利SLY2304~伯特伦·奥布里SLY2305~艾弗里SLY2306~Malcolm Baddock SLY2307~Marcus Belby SLY2308~Katie Bell SLY2309~Sirius Orion Black Checkouts SLY2304~DMT-002~2019-03-27 SLY2301~GWG-001~2019-03-27 SLY2308~APM-002~2019-03-14 SLY2303~DMT-001~2019-04-03 SLY2301~GWG-002~2019-04-03 EndOfInput 样本输出 2019-03-14~凯蒂·贝尔~APM-002~高级药剂制造2019-03-27~伯特伦·奥布里~DMT-002~防御魔法理论2019-03-27~汉娜·阿伯特~GWG-001~与食尸鬼一起游荡2019-04-03~汉娜·阿伯特~GWG-002~与食尸鬼一起游荡2019-04-03~斯图尔特·阿克利~DMT-001~防御魔法理论


Tags: 数据信息标题格式魔法理论用户名书籍
3条回答
 str1=input()                           #do check indentation(must!!)

 (lst1,lst2,lst3)=([],[],[])

while str1!="EndOfInput":

if str1=="Books":
    while True:
        str1=input()
        if str1!="Borrowers":
            lst1.append(str1.split('~'))
        else:
            break
if str1=="Borrowers":
    while True:
        str1=input()
        if str1!="Checkouts":
            lst2.append(str1.split('~'))
        else:
            break

if str1=="Checkouts":
    while True:
        str1=input()
        if str1!="EndOfInput":
            lst3.append(str1.split('~'))
        else:
            break
l1=dict(lst1)
l2=dict(lst2)
l3=sorted(lst3,key=lambda t:t[0])
ll=[]

for i in range(len(l3)):
  ll.append([((l3[i][2],l2.get(l3[i][0]),l3[i][1],l1.get(l3[i][1])))])

  fl=sorted(ll, key=lambda t:t[0])
  for j in range(len(fl)):
     for k in fl[j]:
        print(k[0],k[1],k[2],k[3],sep="~")

以下是我对准则的建议:

l=[]

due_date=[]

full_name=[]

while True:

    x=input()
    l.append(x)
    if x=="EndOfInput":
            inde=l.index("Books")
            inde2=l.index("Borrowers")
            inde3=l.index("Checkouts")
            l1=l[inde:inde2:1]
            l2=l[inde2:inde3:1]
            l3=l[inde3:len(l)-1:1]
            d1={l1[0]:l1[1::]}
            d2={l2[0]:l2[1::]}
            d3={l3[0]:l3[1::]}
            break


for e in d3.values():

    for j in e:
        x=j.split("~")
        x1=x[0] 
        x2=x[2] 
        for e1 in d2.values():
            for j1 in e1:
                xx=j1.split("~")
                xx1=xx[1]  
                if x1 in xx[0]:
                    due_date.append(x2)
                    full_name.append(xx1)

asscnu_title=[]

for e in d3.values():

    for j in e:
        x2=j.split("~")
        x2=x2[1]  
        for e1 in d1.values():
            for j1 in e1:
                if x2 in j1:
                    asscnu_title.append(j1)   

full_names=[]

for e in full_name:

    full_names.append("~{}".format(e))

asscnu_titles=[]

for e in asscnu_title:

    asscnu_titles.append("~{}".format(e))

final=zip(due_date,full_names,asscnu_titles)

final=list(final)

final.sort()

for e in final:

    print("".join(e))

这很管用。我已经编写了代码,6个测试中有6个通过了。希望这对你们有帮助。编码快乐!在

def borrowers_input(b):
    x=input()
    while x!='Checkouts':
        x=x.split('~')
        b.append(x)
        x=input()

def checkouts_input(c):
    x=input()
    while x!='EndOfInput':
        x=x.split('~')
        c.append(x)
        x=input()

def output():
    global books,borrower,checkout
    date=[]
    uname=[]
    name=[]
    Anum=[]
    title=[]
    for i in range(0,len(checkout)):
        date.append(checkout[i][2])

    for i in range(0,len(checkout)):
        uname.append(checkout[i][0])

    for i in range(0,len(uname)):
        for j in range(0,len(borrower)):
            if(uname[i] == borrower[j][0]):
                name.append(borrower[j][1])

    for i in range(0,len(checkout)):
        Anum.append(checkout[i][1])

    for i in range(0,len(Anum)):
        for j in range(0,len(books)):
            if(Anum[i] == books[j][0]):
                title.append(books[j][1])

    final=[]
    for i in range(0,len(checkout)):
        final.append(date[i]+'~'+name[i]+'~'+Anum[i]+'~'+title[i])
    final.sort()
    for i in range(0,len(final)):
        print(final[i])


books=[]
borrower=[]
checkout=[]
x=input()
x=input()
while x!='Borrowers':
    x=x.split('~')
    books.append(x)
    x=input()
borrowers_input(borrower)
borrower.sort()
checkouts_input(checkout)
output()

相关问题 更多 >