蓝桥杯 python BASIC整理
1.BASIC-2 01字串
问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
for i in range(32):
print('{:0>5d}'.format(int('{:b}'.format(i))))
其中range()的用法为:
>>>range(10) # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11) # 从 1 开始到 11,左闭右开
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5) # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3) # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
format()的用法为:
print("{:.2f}".format(3.1415926))
3.14
’{:b}’.format(i) #把十进制数字i转化为二进制
‘{:0>5d}’.format(int(’{:b}’.format(i)))
#用0补全二进制数,让它始终保持五位数
2.BASIC-3 字母图形
问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
n,m=map(int,input().split())
for i in range(n):
for j in range(m):
if i<=j :
print(chr(ord('A')+j-i),end='')
else :
print(chr(ord('A')+i-j),end='')
print()
其中map()用法为:map(function,序列……)
ord()函数就是用来返回单个字符的ASCII值(0-255)
相反地,chr()函数是输入一个整数0-255返回其对应的ASCII符号
2.BASIC-6 杨辉三角
问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
输入格式
输入包含一个数n。
输出格式
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
n = int(input())
l=[[0 for i in range(n)] for i in range(n)] #生成n*n的0矩阵
l[0][0] = 1
print(1)
for i in range(1,n,1):
for j in range(0,i+1,1):
if j==0:
l[i][j]=1
print(1,end=' ')
elif j==i:
l[i][j]=1
print(1,end=' ')
print()
else: #如果是中间的数就用这个公式
l[i][j]=l[i-1][j]+l[i-1][j-1]
print(l[i][j],end=' ')
刚开始没加l[i][j]=1,一直做不对,看了好久才发现没有给他赋值。
4.BASIC-9 特殊回文数
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
n=int(input())
def sum(number): #求和
sum=0
s=list(str(number))
for i in range(len(s)):
sum=sum+int(s[i])
return sum
def ispal(number): #判断是不是回文数
t=list(str(number))
if t==t[::-1]:
return True
else:
return False
if n>=1 and n<=54:
i=10000
while i<1000000:
if ispal(i):
if sum(i)==n:
print(i)
i=i+1
其中,t=t[::-1]
这个语句很重要,只要这一条语句就可以判断整个数字是不是回文数。
4.BASIC-10-12 有关进制转换
十进制转其他进制只要用
‘{:x}‘.format(11)
其他进制转十进制用 (例如十六进制转十进制)
int(a,16)
其他进制之间的互相转换:
先转化为十进制,再从十进制转化。(例如实十六进制转换为八进制)'{:o}.format(int(a,16))'
5.BASIC-13 数列排序
问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
这题没什么好说的,就是要知道排序的话直接用sort函数a.sort()
就行了,不要再去写排序算法。还有就是print(a,end=’ ')代表输出的数字后面加一个空格。 换行的话是print()
连着下面的两题中需要注意的,一起写一下:
1.a.lower()是将a中的大写字符都转化为小写字符。
2.要输出a:b:c这样的格式,代码如下:
print('%d:%d:%d' % (a,b,c))