输入
oxA
输出
10
十六进制转成10进制
方法1
import math
dict1={}
dict1['A']=10
dict1['B']=11
dict1['C']=12
dict1['D']=13
dict1['E']=14
dict1['F']=15
while True:
try:
result=0#返回的十进制数字
num=input()
num2=num[2:] #获取十六进制数值,去掉0x
#print(num2)
#从最右边开始,数字*16 0次方
#数字*16 1次方
#数字*16 2次方
i=len(num2)-1#最后一个字符下标
j=0#16的次方,从0开始
while(i>=0):#从最后一个,到最前面一个
if(num2[i] in ['A','B','C','D','E','F']):
n=dict1[num2[i]]
else:
n=int(num2[i])
result =result+n*math.pow(16,j)
j=1+j
i=i-1
print(int(result))
except:
break
方法2
while True:
try:
print(int(input(),16))
except:
break
简短
简短
简短
int 是一个类,
class int
里面有一个方法,可以直接把输入的16进制,变成10进制的int(x, base=10) -> integer
x 是一个string
base 提供是什么进制的数字
int("0xA",16)
把16进制数字0xA转十进制数字
>>> int(input(),16)
0xA
10
>>> int(input(),16)
0xB
11
>>> int(input(),16)
0x19A
410
>>> int(input(),2)
1
1
>>> int(input(),2)
10
2
>>> 10
10
>>> int(input(),2)
总结:
元芳,这两位程序员的代码,你怎么看
方法2,直接了当就用了一条语句,实现了功能。
说明他对python的int类型,很熟悉。
很可能他就知道这个语句,
看不到多少他编程的功力,这方面还没有展现。
方法1,
说明他对python里面的int类型不熟悉。
不知道还有这样的操作。
这样的语句。
所以,他没法想到用这条语句。
但他知道一个东西,他知道进制是如何转换的。
他根据这个原理,写了代码
他写的代码更多,体现的逻辑思维更强。
处理的非常的细致。
涉及到进制转换的细节。
有一种程序设计的思维。
但他不知道偷懒,不知道这些事情不需要自己做。
早就有人做了。
直接拿来调用一条语句,就可以了呀
干嘛浪费时间呢。
1
已经有现成的代码,要复用。
直接调用。不需要自己再去实现。
高效率。
但用方法1的人,不知道存在这样的一条语句。
所以他要自己造。
方法2的人,知道,
所以他自己不用造,复用。
轻松感就是这么获得的。
2
如果没有现成的代码,需要自己去实现,自己搞懂逻辑。
就需要方法1这样的细致。
方法1虽然是自己造,很受累。
但是其展现的程序设计思维,还是值得肯定的。
但思维要用到合适的地方,发挥更大的作用。
最好不用在重复做过的事情上。