打开网易新闻 查看精彩图片

考点:进制转化函数和数学通用方法【Python习题12】

考点分析:

本考点主要考查计算机中的常用数值转化和数学通用算法。

介绍:

本文将介绍几个python中用于进制转换的函数,讲解数学中的数值转化通用算法案例。

先看题目:

题目:输入一个八进制数,输出一个转换为十进制的数

效果预览:

请输入一个八进制的数:122

82

考题解析:

  1. 常用进制写法

二进制常用B表示,在python中,我们可以用0b1012,这个数值如果输出时,自动转为十进制。我们可以用简单代码测试:

a=0b1011
print(a)

以上代码输出11,这个11是一个十进制数据。

八进制常用O表示,十进制常用D表示,十六进制常用H表示。

通过二进制的示例,我们可以看到一个八进制、十六进制表示后输出为对应十进制数据测试如下:

八进制测试:

b=0o11
print(b)

输出9

十六进制测试:

c=0xc
print(c)

输出12

十进制数据就是程序默认的数据形式,默认输入的变量数据就是十进制。测试如下:

d=101
print(d)

输出101

2.用函数进行进制转化

二进制、八进制、十六进制 转 十进制,使用int函数解决一切,int函数有两个参数,第一个参数是字符串,第二个参数表示进制,以下是二进制转十进制的测试如下:

a="101"
b=int(a,2)
print(b)

输出5

八进制转十进制测试:

a="11"
b=int(a,8)
print(b)

输出9

十六进制转十进制测试:

a="10"
b=int(a,16)
print(b)

输出16

十进制转二进制使用bin函数即可,测试如下:

a=10
b=bin(a)
print(b)

输出

0b1010

十进制转八进制使用oct函数即可,测试如下:

a=10
b=oct(a)
print(b)

输出

0o12

十进制转为十六进制使用hex函数,测试如下:

a=14
b=hex(a)
print(b)

输出0xe

其它进制转化情况,都可以通过以上几个函数的联合使用,使得二进制、八进制、十进制、十六进制之间实现互相转化。

3.我们也可以使用通用的数学方法进行转化。

按照本题目中要求,输入一个字符串,这个字符串就是一个八进制的数字,这个数字我们将其从左到右进行截取,并且依次乘以进制数后加上下一个数值即可得到相应进制结果。例如,我们将八进制12转为十进制,过程应该是:

1)先取1,使用0*8+1=1

2)再取2,使用1)的结果1*8+2=10

得到的10就是十进制结果。

以上数学方法是一种通用的其它进制转为十进制的方式。

数学通用做法,程序源代码:

# -*- coding: utf-8 -*-"""@File文件 : ljytest85@Time创建时间 : 2021/12/21@Author作者 : 刘金玉@Contact联系方式 : selidev@qq.com 编程创造城市 http://bcczcs.com注:作者信息请保留!否则必究法律责任!刘金玉编程,编程创造城市!作者微信号:selidev作者抖音号:selidev作者B站:刘金玉编程微信公众号:编程创造城市题目:输入一个八进制数,输出一个转换为十进制的数"""
#输入八进制数shu=input("请输入一个八进制的数:")#使用简单算法计算,这里将输入的字符串从左到右分割,乘以进制数后加上剩下的数就是结果result=0#表示for i in range(len(shu)):result=result*8+ord(shu[i])-ord('0') #ord函数是将字符转为ascii码,这里巧妙使用数学中计算通项式得到实际数值
print(result)

总结:

我们平时在python中常用几个特定的函数去解进制转化问题,这样比较快速,比如用bin函数、hex函数、oct函数、int函数,使用这些函数,我们就可以快速搞定了。但是我们也千万不能忘记使用数学通项式的方式去解决进制转化问题,因为在数学中转换是比较通用的,考查一个人的基本算法使用。

如果读者还有问题或者建议,请在文本下方留言,老刘将给予答复!

更多Python基础操作知识,大家可以到B站/优酷/爱奇艺/好看视频/腾讯视频搜索“刘金玉”,可以找到《零基础Python教程》和《Python高级进阶教程》视频合集哦!全部免费亲情奉献!

联系作者:刘金玉

长按关注公众号

编程创造城市官网:https://bcczcs.com/