基于在图书馆发行图书的程序

时间:2019-02-28 07:41:55

标签: python

霍格沃茨巫术与巫术学校的图书馆已将其图书发行过程进行了计算机化处理。相关信息以文本形式从三部分中以标准输入形式提供:有关书籍的信息,有关借款人的信息以及有关结帐的信息。每个部分都有特定的线格式,如下所述。

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

有关借款人的信息 行格式:用户名〜全名

有关结帐的信息 行格式:用户名〜登录号〜到期日 注意:到期日格式为YYYY-MM-DD。

您可以假定数据在内部是一致的。每次结帐时,输入数据中都有一个相应的用户名和登录号,两个人不会同时结帐。 输入的每个部分均以包含单个关键字的一行开头。第一部分以包含书本的行开始。第二部分从包含借款人的行开始。第三部分以包含Checkout的行开始。输入的结尾由包含EndOfInput的行标记。 编写Python程序以如上所述读取数据,并打印出已签出的书籍的详细信息。每行应以以下格式描述一本当前发行的书: 截止日期〜全名〜登录号〜标题 您的输出应按截止日期的升序排序。对于在同一日期到期的图书,请按全名的升序排列。 这是一个示例输入及其相应的输出。 样本输入 书籍APM-001〜高级药水GWG-001〜食尸鬼APM-002〜高级药水DMT-001〜防御魔法学DMT-003〜防御魔法学GWG-002〜与食尸鬼DMT-002〜防御魔术理论借款人SLY2301〜汉娜·雅培SLY2302〜Euan Abercrombie SLY2303〜Stewart Ackerley SLY2304〜Bertram Aubrey SLY2305〜Avery SLY2306〜Malcolm Baddock SLY2307〜Marcus Belby SLY2308〜Katie Bell SLY2309〜Sirius Or 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〜Katie Bell〜APM-002〜高级药水制作2019-03-27〜Bertram Aubrey〜DMT-002〜防御魔法理论2019-03-27〜Hannah Abbott〜GWG-001〜Gadding With Ghouls 2019 -04-03〜汉娜·雅培〜GWG-002〜与食尸鬼合影2019-04-03〜斯图尔特·阿克利〜DMT-001〜防御魔法理论

5 个答案:

答案 0 :(得分:4)

这有效。我已经对其进行了编码,并在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()

答案 1 :(得分:0)

 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="~")

答案 2 :(得分:0)

这是我对代码的建议:

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))

答案 3 :(得分:0)

//In the webpack.config.js file
plugins: [
    new HtmlWebpackIncludeAssetsPlugin({ assets: "env-vars.js", append: false }),
    // This is the script that generate my env-var.js file
    new WebpackShellPlugin({ onBuildStart: ["npm run generate-env-var-file"] }),
    new CopyWebpackPlugin([
      {
        from: "./env-vars.js",
        to: "./",
      },
    ]),
  ]

答案 4 :(得分:-1)

x=0       #do check indentation(must!!)
users={}
books={}
checkouts={}
while(True):
   s=input()
   if(s=="EndOfInput"):
      break
   if(s=="Books"):

        x=1
        continue
   if(s=="Borrowers"):

        x=2
        continue
   l=s.split("~")
   if(s=="Checkouts"):
        x=3
        continue
   if(x==1):

        books.__setitem__(l[0],l[1])
   if(x==2) :

        users.__setitem__(l[0],l[1])
   if(x==3):
        if(l[2]  not in checkouts.keys()):
            checkouts.__setitem__(l[2],[[users[l[0]],str(l[1]),books[l[1]]]])
        else:
            checkouts[l[2]].append([users[l[0]],str(l[1]),books[l[1]]])
for i in sorted(checkouts.keys()):
      checkouts[i].sort()
      for j in range(len(checkouts[i])):
         print(i,(*checkouts[i][j]),sep="~")