【蓝桥杯】非VIP基础题型训练17题 (Python 题解)
NO.I 基础题型
基础练习汇总
时间 | 题目 | 解析 |
---|---|---|
21.12.24 早上 | 1. A+B问题 | 练习系统的适应 |
21.12.24 早上 | 2. 数组排序 | 输入输出排序 |
21.12.24 早上 | 3. 十六进制转为8进制 | format o 16 |
21.12.24 早上 | 4. 十进制转化为十六进制 | int x X |
21.12.24 早上 | 5. 特殊回文数 | str 与 list |
21.12.24 早上 | 6. 特殊的数字 | pow(x,y) str[] |
21.12.24 中午 | 7. 4位数的回文数 | str |
21.12.24 中午 | 8. 杨辉三角 | yeild 规律 |
21.12.24 中午 | 9. 查找整数 | |
21.12.24 中午 | 10. min() max(),sum() | |
21.12.24 下午 | 12.字母图形 | ord() chr() |
21.12.24 下午 | 13. 01字符串 | format({0:>5b}) |
21.12.24 下午 | 14. 判断闰年 | y/4=0y/100!=0 or y/400=0 |
21.12.24 下午 | 15. Fibonacci数列 | 先取余数,不然会超时 |
21.12.24 下午 | 16 圆的面积 | format :.7f 和 round() |
21.12.24 下午 | 17. 序列求和 | 暴力超时, |
试题1: A+B问题
A, B = map(int, input().split())
print(A+B)
试题2: 数组排序
count = int(input())
l1 = list(map(int, input().split()))
l1.sort()
for i in range(count):
print(l1[i],end=" ")
试题3:十六进制To8进制
# 16 to 8
cnt = int(input())
for i in range(cnt):
que = int(input(), 16) # 将16进制转为10进制
print("{0:o}".format(que)) # 十进制转为8进制使用format {0:o} o代表8进制{0:#o} 带前缀0代表占位符
format(0xa, 'o') # 输出不带前缀
# *^10 ⟹ 一共10位,居中,剩下的用*补齐
^居中 >右对齐 <左对齐
format(num,',')快速分割千分位
{:*>10}:右对齐左边使用* 填补
{:*^10 :居中对齐剩下使用*填补
试题4:十进制To十六进制
print("{0:X}".format(int(input())))
# 这里需要注意输出如果是大写使用X ,如果是小写使用x
# 16:x 8:o 10:int 2:b
试题5: 特殊回文数
# 回文数各个位数之后等于输入
def pali(num): # 判断回文数
s1 = str(num)
s2 = s1[::-1]
if s1==s2: //翻转之后还是相等就是回文
return True
else:
return False
# 如果是回文判断各个位数是否相等
n = int(input())
for i in range(10000,1000000):
if pali(i):
ls = list(str(i))
sum = 0
for j in ls:
sum+=int(j)
if sum == n:
print(i)
试题6:特殊的数字
153 = 1*1*1 + 5*5*5 + 3*3*3
import math
for i in range(100,1000):
strs = str(i)
ans = math.pow(int(strs[0]),3)
ans1 = math.pow(int(strs[1]),3)
ans2= math.pow(int(strs[2]),3)
if i == (ans+ans1+ans2):
print(i)
试题7:4位数的回文数
for i in range(1000,10000):
s = str(i)
s1 = s[::-1]
if s == s1:
print(i)
试题8:杨辉三角
解析:首尾都是1, 中间部分是按照前一个的0+1,1+2,2+3,3+4...这样递推下来的;
这里使用yield 生成器,返回之后下一次从前一次继续往下
n = int(input())
def tri():
p = [1]
while True:
yield p
p = [1] +[p[i]+p[i+1] for i in range(len(p)-1)] + [1]
de = 0
for t in tri():
for l in t:
print(l,end=" ")
print()
de = de + 1
if de == n:
break
试题9:查找整数
#include<iostream>
using namespace std;
int main()
{
int n,target,ans=0;
cin>>n;
int a[n];
for(int i=0; i<n; i++)
{
cin>>a[i];
}
cin>>target;
for(int i=0;i<n;i++)
{
if (target == a[i])
{
ans = i+1;
break;
}
}
if (ans==0){cout<<-1;}
else{cout<<ans;}
return 0;
}
cnt = int(input())
li = map(int, input().split())
ls = list(li)
target = int(input())
ans = 0
if target not in ls:
print("-1")
for i in ls:
if i == target:
print(ls.index(i)+1)
break
试题10:min() max(),sum()
n = int(input())
l1 = list(map(int,input().split()))
l_min = min(l1)
l_max = max(l1)
sum = sum(l1)
print(l_max)
print(l_min)
print(sum)
试题11: 字母图形
对角线
i<j
i>j
n,m = map(int, input().split())
for i in range(1,n+1):
#print(chr(ord("A")+i-1),end="")
for j in range(1,m+1):
if i == j:
print("A",end="")
if i<j: # 右上角
print(chr(ord("A")+j-i),end="")
if i>j: # 左下角
print(chr(ord("A")+i-j),end="")
print()
试题12:01字符串
输出格式向右对齐左边补0
for i in range(32):
print("{:0>5b}".format(i))
试题13:判断闰年
year = int(input())
if (year%4==0 and year%100!=0) or year%400==0:
print("yes")
else:
print("no")
试题14:Fibonacci数列
每次计算每一项的时候都用余数进行保存,不用将该项的具体值计算出来之后在取余数
n = 10007
num = int(input())
a1 = 1
a2 = 1
sum = 0
for i in range(1,num+1):
sum = a1%n
temp = a2;
a2 = (a1 + a2)%n
a1 = temp
print(sum)
试题15:圆的面积
# 100
import math
radius = int(input())
area = math.pi * radius *radius
print("{:.7f}".format(area))
#90
import math
radius = int(input())
area = math.pi * radius *radius
print(round(area,7))
对于round() 虽然也是采用四舍五入的方式,但是对于末尾是0的会直接舍弃
print(round(123.2000,3)) # 123.2
试题16:序列求和
等差数列求和
# 80 暴力超时
n = int(input())
sum = 0
for i in range(n+1):
sum += i
print(sum)
# 等差数列求和
n = int(input())
print(int((1+n)*n/2))
2021-12-25 15:45:13 星期六
本文来自博客园,作者:jucw,转载请注明原文链接:https://www.cnblogs.com/Jucw/p/15730721.html