实验五 字符类型及其操作-第5关:ISBN校验

任务描述

本关任务: 国际标准书号(ISBN)用10位数字唯一标识的一本书。 最后一位数字为校验位,可以由其他9位数字计算出来,且d1+2d2+3d3+……+10d10必须是11的倍数(di的下标表示从右边起第i个数)。 校验位必须是介于0到10中的一个数字,用字母X表示10. 例如,020131452的校验和是5 10*0+9*2+8*0+7*1+6*3+5*1+4*4+3*5+2*2+1*5为88,是11的倍数

编写一个python程序,将9位整数作为输入,计算校验和并打印isbn号 例如,输入020131452,输出0201314525

测试说明

平台会对你编写的代码进行测试:

测试输入:711141995; 预期输出: 7111419952

测试输入:730232560; 预期输出: 730232560X

x = input("")

# 代码开始
def calculate_isbn_checksum(isbn):
    if len(isbn) != 9:
        raise ValueError("输入必须是9位数字")
    
    total = 0
    for i in range(9):
        total += (10 - i) * int(isbn[i])
    
    checksum = 11 - (total % 11)
    
    if checksum == 10:
        return 'X'
    elif checksum == 11:
        return '0'
    else:
        return str(checksum)

checksum = calculate_isbn_checksum(x)
isbn = x + checksum
# 代码结束

print(isbn)

 

  • 17
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值