蓝桥杯python基础练习11 十六进制转十进制

问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入
FFFF
样例输出
65535

方法1

知识点:1:ord(i)函数,将字母i转化为它所对应的ASCII码的数值
		2:  A.isdigit()函数,判断是否只由数字组成
		3: A.isalpha()函数,判断是否只由字母组成	
思路:对所输入的一串数字进行遍历,然后判断是数字还是字母。如果是字母的话,将它转换为所对应的数字。同时对它这个数字进行幂的运算。
while True:
    try:
        a=input()
        s=0

        for i in range(len(a)):
            if a[i].isdigit():
                s=s+(ord(a[i])-ord('0'))*pow(16,len(a)-i-1)
            elif a[i].isalpha():
                s=s+(ord(a[i])-ord('A')+10)*pow(16,len(a)-i-1)
        print(s)
    except:
        break

方法2

思路:用条件语句将每一种可能的情况列出来,然后放入列表中。
while True:
    try:
            #十六进制转十进制
        n = input()
        sum = 0
        j = 1

        for i in n:
            if i <= str(9):
                num = i
            elif i == 'A':
                num = 10
            elif i == 'B':
                num = 11
            elif i == 'C':
                num = 12
            elif i == 'D':
                num = 13
            elif i == 'E':
                num = 14
            elif i == 'F':
                num = 15

            sum = sum + int(num)*(16**(len(n)-j))
            j = j+1
        print(sum)
    except:
        break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值