试题 基础练习 数列排序
资源限制
内存限制: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()