当前位置: 高中信息技术 / 综合题
  • 1. (2023高二下·丽水期末) 图书查询。所有正版图书均有唯一的国际标准书号(ISBN),ISBN由13位数字和字符“-”组成,字符“-”对数字间隔分段。如:某图书的ISBN为“978-7-5536-3176-9”(其中“978”表示图书类代码,“7”表示地区码,“5536”表示出版社代码,“3176”表示书序码,“9”为校验码)。小李为某校园书吧编写了图书查询的程序。

    1. (1) 主程序

      lst1=readfile("in.csv")#  校园书吧库存图书信息存储在文件"in.csv"

      while True:

          print("1.验证 ISBN  校验码; 2.统计出版社费用; 3.操作结束")

          opt=int(input("请输入操作编号(1-3):"))

          if opt==1:

              isbn=input("请输入 ISBN  号:")

              if check(isbn):

                  print("校验码正确")

              else:

                  print("校验码错误")

          elif opt==2:

              code=input("请输入出版社代码:")

              money=total(code)

              print("书吧中该出版社出版的图书总价:%.2f 元" %money)    #输出的总金额保留 2 位小数点

          else:

              print("操作结束")

              break

      运行程序,若输入opt值为 4,程序将(单选,填字母;A .运行时报错/ B .输出“操作结束”)。

    2. (2) 读写文件

      小李将校园书吧库存图书信息存储在文件"in.csv"中,内容如图所示。函数readfile()用于逐行读取文件数据存入列表并返回。请在划线处填入合适的代码。

      import pandas as pd

      def readfile(filename):        #读 csv  格式文件内容,将其存入列表并返回

          df1=pd.read_csv(filename, encoding="GBK")

          lst=[]

          for i in df1.index:

              isbn=df1["ISBN"][i]

              num=df1["图书数量"][i]

              price=df1["单价 (元) "][i]

              #添加到列表
      lst.append([isbn,num,price])

      return

    3. (3) 校验码验证

      ISBN最后一位的校验码用来检验前12位数字是否准确,是保护知识产权的一种检验方法。计算方法如下:

      ①将ISBN中前12位数字从左到右依次编号为“1、2、3、……、12”。

      ②若数字编号是奇数,则对应权值为1,否则权值为3。首先将ISBN中前12位的数字值与对应权值相乘,然后将计算所得值进行累加。

      ③最后,用10减去第②步结果对10整除的余数,所得结果即为校验码。

      defcheck(ISBN):    #对ISBN校验码验证

          n=len(ISBN)

          val=0; k=3

          for i in range(0,n-1):

              if '0'<=ISBN[i]<='9':

                  k=4-k

                  val+=int(ISBN[i])*k

      if result==int(ISBN[-1]):

          return True

      else:

          return False

    4. (4) 统计校园书吧中某出版社出版的所有图书总价

      '''列表 lst1  中的部分数据如:

      [['978-7-5139-3066-6',7,59.80],['978-7-5063-3174-6',9,48.00] , ……]

      '''

      def total(code):                    #统计书吧中出版社代码为 code  的所有图书总价

          n=len(lst1);money=0

          for i in range(n):

              isn=lst1[i][0].split('-')     #将 list1[i][0]以“- ”为分隔符,分割成多个字符串组成的列表

              if isn[2]==code:

                 

          return money

微信扫码预览、分享更方便