蓝桥杯基础练习汇总详细解析(一)——数列排序、十六进制转八进制、十六进制转十进制、十进制转十六进制、特殊回文数(代码实现、解题思路、Python)

 试题 基础练习 数列排序

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

输入格式

  第一行为一个整数n。
  第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

输出格式

  输出一行,按从小到大的顺序输出排序后的数列。

样例输入

5
8 3 6 4 9

样例输出

3 4 6 8 9

题目解析:这道题目是一个数字排序问题,因为在Python中列表有自动排序的函数sort(),并且需要使用列表保存用户输入的多个同类型数据。所以我们选择列表保存数据。然后对列表使用sort()函数即可实现排序。但是需要注意的是:排序完成后,输出最后一个列表元素,不能带有空格。

具体实现如下:

def paixu():
    length=map(int,input())
    list_arry=list(map(int,input().split()))
    list_arry.sort()
    for number in list_arry:
        if number!=max(list_arry):
            print(number,end=" ")
        else:
            print(number,end="")
paixu()

运行通过截图:

试题 基础练习 十六进制转八进制

提交此题   评测记录  

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。

输入格式
  输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式
  输出n行,每行为输入对应的八进制正整数。

  【注意
  输入的十六进制数不会有前导0,比如012A。
  输出的八进制数也不能有前导0。

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

  提示
  先将十六进制数转换成某进制数,再由某进制数转换成八进制。

题目分析:

        首先需要定义一个变量用于接受十六进制数的个数,然后利用for循环实现十六进制的录入。

解题过程中用到的函数有:int(str,n)——将输入的字符串数据str视为指定的进制数,然后转换为十进制数返回;         oct(number)将十进制数据number转换为八进制。

具体实现如下:

def oct_number():
        n = int(input())
        results=[] #保存计算结果
        for i in range(n):
                number=int(input(),16) #将输入数据视为十六进制数,然后转换为十进制数
                result=oct(number)[2:] #因为返回结果是字符串,且有0o标志,所以需要切片
                results.append(result) #保存结果
        for result in results:
                print(result)
oct_number()

试题 基础练习 十六进制转十进制

提交此题   评测记录  

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

题目分析:

这个题目很简单,就是利用int(str,n)函数将指定的数据转换为10进制数即可。这里我将再次解释int()函数的作用:int(str,n)函数有两个参数,第一个参数是一个字符串类型数据,表示程序员需要转换的数据,n是输入数据的对应的进制数类型。当这两个参数输入完成后,int()函数会返回一个十进制的整数。  大家只要理解int()函数的用法,则这个题目就很简单了。

具体实现如下:

def ten_number():
        hex_number=input() #接受用户输入
        ten_number=int(hex_number,16) #将用户输入的十六进制,转换为十进制数返回
        print(ten_number)
ten_number()

试题 基础练习 十进制转十六进制

提交此题   评测记录  

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。

输入格式

  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647

输出格式

  输出这个整数的16进制表示

样例输入

30

样例输出

1E

题目分析:

将输入的数据通过int()函数转换为十进制数,在利用hex()函数将得到的十进制数转换为十六进制数即可。注意事项:因为hex(number)函数中的参数number是一个int类型的数据,所以需要将输入数据使用int函数处理。此外hex()函数返回的结果是一个字符串,且有十六进制的标志‘0x’所以需要切片,同时结合题目中的要求输出的字符是大写字母,所以要用到字符串内置函数upper()将返回的十六进制数中的小写字母全部转换为大写字母。

具体实现如下:

def hex_number():
        ten_number=int(input(),10)
        hex_number=hex(ten_number)[2:]
        print(hex_number.upper())
hex_number()

试题 基础练习 特殊回文数

提交此题   评测记录  

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式

  输入一行,包含一个正整数n。

输出格式

  按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

52

样例输出

899998
989989
998899

数据规模和约定

  1<=n<=54。

题目分析:这个题目经过几个条件判断即可。我的解题想法是将数字范围规定在10000~999999,然后通过map()函数将转为字符串的数字进行求和,将求和结果与输入数据比较,如果相等就判断该数字是否满足“回文数特点”。判断过程可以通过切片完成,如果满足回文数条件,就输出数据即可。

注意事项:进行切片的时候,切片的范围不包括最后指定的索引位置。如果需要将字符串的内容倒序切片,可以将切片的步长指定为“-1”,这样就会先将切片内容倒序后,再进行切片,此时的开始索引从-1开始,切片范围不包括最后指定的索引位置。

具体实现如下:

def cycle_number():
        n=int(input())
        for number in range(10000,999999+1):
                str_number=str(number) #将输入数据转换为字符串,便于求和及切片
                result=sum(list(map(int,str_number))) #对字符串进行求和
                if result==n:
                        if len(str_number)==5:
                                if str_number[:2]==str_number[-1:-3:-1] :
                                        print(number)
                        if len(str_number)==6:
                                if str_number[:3]==str_number[-1:-4:-1]:
                                        print(number)
cycle_number()

  • 36
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值