对于不同进制的转化:
1、把不同进制转化为十进制
- int(‘02245’, 8) # 1189
- 第一个参数是需要转成十进制的字符串
- 第二个参数是第一个参数的类型,比如是2、8或者16进制
- 例如, 把16进制的0xD32C转为十进制
- int(‘0xD32C’,16) # 54060
- 把2进制的0b10转为十进制
int(‘0b10’, 2) # 2
2、把不同进制转化为二进制
- hex(10) #把10进制转化为16进制 0xA
- oct(10) #把10进制转化为8进制 0o12
- bin(10) #把10进制转化为2进制 0b1010
例题:计算表达式的值,要求如下:
1.各个表达式不一定都是十进制数字,也有八进制(0开头)、十六进制(0x开头的)
2.表达式中运算符包括+,-运算。
输入:02245+654+0xD32C
输出:-52217
首先这道题我们首先想到的是把不同的进制同一。这里输入的公示可以切片获得字符串。对于字符串可以把不同进制的数字变成十进制。实现步骤:
1、切片把三种数据拿出来
2、把数据类型转换统一
3、遍历计算字符串判断加减操作
4、根据遍历情况进行操作:
import re
def fun(eq):
ret = re.split('[+,-]',eq)
li = [ ]
for e in ret:
if e[0] == '0':
if e[1] == 'x':
e = int(e, 16)
else:
e = int(e, 8)
else:
e = int(e)
li.append(e)
j = 0
val = li[j]
for i in range(len(eq)-1):
if eq[i] == '+':
val = val + li[j+1]
if eq[i] == '-'
val = val - li[j+1]
return val
eq = input('输入')
print(fun(eq))