您当前的位置: 首页 >  Python

孑渡

暂无认证

  • 1浏览

    0关注

    178博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

算法刷题系列(三)蓝桥杯python基础练习4

孑渡 发布时间:2021-02-03 10:21:19 ,浏览量:1

- 十六进制转十进制

资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535

  • 解答程序
# 十六进制转十进制
temp_dict = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15}
oxstr = input()
weight = 1
tar = 0
for s in oxstr:
    tar = tar * 16 + temp_dict[s]
print(tar)
  • 经验教训 无。

- 十六进制转八进制

资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1 7: temp = raw_int - raw_int // 8 * 8 tar_int = str(temp) + tar_int raw_int = raw_int // 8 else: tar_int = str(raw_int) + tar_int return tar_int

然而,这种方式执行的代码时间执行长度远远超过1s,这也是python语言最容易遇到的问题。研究后笔者发现,事实上python的int函数可以直接处理进制问题。

int(x, base) x为字符串或者整数,base为进制数

但是当x为整数的时候,进制数参数是被禁用的,也就是说我们无法将十进制数直接扔进去转为八进制数。因此我们还需要用print的格式化输出

print("%o" %()) %o表示无符号格式化八进制

于是代码被修改为

n = int(input())
temp_list =[int(input(), base=16) for i in range(n)]
for i in temp_list:
    print("%o" %(i))

简洁明了,运行时间还只需要31ms。

做此类题目可以明白一定要充分发挥python的优势,在执行速度方面无法与C,JAVA比较的前提下要尽可能发挥python提供的方法,熟悉python语言的函数是非常重要的。

- 数列排序

资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1

关注
打赏
1663211900
查看更多评论
立即登录/注册

微信扫码登录

0.0362s