12. 图书查询。所有正版图书均有唯一的国际标准书号(ISBN),ISBN由13位数字和字符“-”组成,字符“-”对数字间隔分段。如:某图书的ISBN为“978-7-5536-3176-9”(其中“978”表示图书类代码,“7”表示地区码,“5536”表示出版社代码,“3176”表示书序码,“9”为校验码)。小李为某校园书吧编写了图书查询的程序。
(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)读写文件
小李将校园书吧库存图书信息存储在文件"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)校验码验证
ISBN最后一位的校验码用来检验前面12数字是否准确,是保护知识产权的一种检验方法。
计算方法如下:
①将ISBN中前12位数字从左到右依次编号为“1、2、3、...、12”。
②若数字编号是奇数,则对应权值为1,否则权值为3。首先将ISBN中前12位的数字值与对应权值相乘,然后将计算所得值进行累加。
③最后,用10减去第第②步结果对10整除的余数,所得结果即为校验码。
def check(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)统计校园书吧中某出版社出版的所有图书总价
'''
列表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