0
点赞
收藏
分享

微信扫一扫

蓝桥杯试题基础练习之进制转换——Python满分解答


Python常用进制转换

  • ​​问题描述​​
  • ​​解决方法​​
  • ​​进制转换函数​​
  • ​​具体方案​​
  • ​​先将非十进制转成十进制​​
  • ​​再将十进制转换成其他进制​​
  • ​​数据处理​​
  • ​​切片​​
  • ​​format​​

问题描述

进制转换的问题有很多描述,以下是蓝桥杯里三道题的描述:

  • 给定n个十六进制正整数,输出它们对应的八进制数。
  • 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  • 给出一个非负整数,将它表示成十六进制的形式。

每道题的输入格式可能不太一样,但是解决思路都是通用的。

我们也可以拓展一下题目,实现常用的进制转换。

解决方法

Python有内置的进制转换函数,这在进制转换上是很方便的。但是在进制转换后,有些转换结果都带有前缀,我们需要对结果做一些处理,处理方法有两种:

  • 一种是通过切片的方法
  • 另一种方法是使用format方法

进制转换函数

我们可以使用python内置的进制转换函数实现进制转换。

但是,除了int()方法,其他进制转换函数都有一个前提,那就是输入10进制数

  • int() :转换成十进制
  • bin() :转换成二进制
  • oct() :转换成八进制
  • hex():转换成十六进制

具体方案

先将非十进制转成十进制

因为进制转换函数的前提是输入十进制数,所以我们首先要做的就是先把输入转换成十进制数。

转换成十进制需要的就是int()方法,在转换前,我们需要确定int()方法的两个参数:

  • int(input(), value):input()指输入,value指输入的数制

举个例子:

n = int(input(), 2)  # 输入二进制,输出十进制
n = int(input(), 8) # 输入八进制,输出十进制
n = int(input(), 16) # 输入十六进制,输出十进制

再将十进制转换成其他进制

转换成其他进制的方法用到的是下面三个方法:

num = bin(n) # 转换成二进制
num = oct(n) # 转换成八进制
num = hex(n) # 转换成十六进制

但是转换以后,都带有前缀,如: 0b、0o、0x

这时我们只需要做一下数据处理即可

数据处理

这里有两种解决方案,一种是用切片,另一种是用format方法

切片

print(oct(n)[2:])

如果从1开始计数的话,其实就是从第3位开始取到最后

蓝桥杯试题基础练习之进制转换——Python满分解答_python

format
  • 在format的槽中添加一个"b",等价于实现了bin函数的功能
  • 对八进制的转换使用 “o”, 等价于实现了oct函数的功能
  • 转成十六进制用 “x”, 等价于实现了hex函数的功能

print("{:o}".format(n))

蓝桥杯试题基础练习之进制转换——Python满分解答_进制_02


举报

相关推荐

0 条评论