checkio练习题:number-radix

你是否还记得数学课上学过的底数(对数)和 计数系统(进制)? 让我们来重温练习一下吧。

给你一个字符串格式的正数和一个小于37大于1的整数型底数,用你写出来的方法来把他们转换为底数为10(十进制)的形式。

任务使用数字和‘A-Z’来作为字符串格式的正数。

注意数字无法转换的情况。 例如:“1A”不能用基数9进行转换。对于这些情况,你的函数应该返回-1。

输入: 两个参数,一个字符串参数的正数和一个整数参数底数。

输出: 一个被转换完的十进制整数。

举个栗子:

checkio("AF", 16) == 175
checkio("101", 2) == 5
checkio("101", 5) == 26
checkio("Z", 36) == 35
checkio("AB", 10) == -1

你将学到: 在这个任务中你将学会如何处理各种不同进制的数据,以及一些处理异常等知识。

Precondition: 
re.match("\A[A-Z0-9]\Z", str_number)
0 < len(str_number) ≤ 10
2 ≤ radix ≤ 36

 


def checkio(str_number: str, radix: int) -> int:
    try:  # 这里使用try是因为int容易引发一个ValueError使程序终止
        return int(str_number, radix)  # python的int函数可以转换进制,第一位输入要转换的数字,第二位输入要转换的进制
    except ValueError:
        return -1


# These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
    assert checkio("AF", 16) == 175, "Hex"
    assert checkio("101", 2) == 5, "Bin"
    assert checkio("101", 5) == 26, "5 base"
    assert checkio("Z", 36) == 35, "Z base"
    assert checkio("AB", 10) == -1, "B > A = 10"
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值