最近在刷蓝桥杯题目,按题目做一下笔记整理,顺便分享交流一下,有更好的解决方案欢迎大家共同提出探讨,以下源代码为系统提交满分答案
问题描述
资源限制
Python时间限制:5.0s、
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
源代码
n = int(input())
li = [] # 创建列表
for i in range(n):
li.append(input()) # 输入数据
for num in li:
if len(num) <= 100000: # 判断长度是否符合要求
print(oct(int(num,16))[2:]) # 将元素转换为十进制后转换为八进制,从第三位开始取数并输出
问题分析
本题中将十六进制转换为八进制,考虑到需要将
十六进制转为十进制,再转为八进制
,int(num,16)
表示将十六进制的数转换为十进制,如果不在后赘述16,直接使用int(num)表示将字符串转为整型,转换结果会出错,oct()
表示将十进制数值转换为八进制,转换完成后八进制数前有0o前缀
,使用[2:]
从第三位开始取值,从而去掉0o
更多题目,点击查看
Python蓝桥杯 基础练习题目整理
Python蓝桥杯 算法训练题目整理
Python蓝桥杯 算法提高题目整理
Python蓝桥杯 历届真题题目整理
Python蓝桥杯 练习系统题目整理(全)