蓝桥杯python部分题目和答案分享(个人做法)易懂(2) [十题]

5 篇文章 0 订阅
5 篇文章 0 订阅

目录

第十一题:分数求和

第十二题:复数求和

第十三题:龟兔赛跑预测

第十四题:购物单取钱

第十五题:换钞票,求数量

第十六题:矩形面积交(坐标系上)

第十七题:数门牌号

第十八题:矩阵求和

第十九题:时间转换

第二十题:年号对应字串


第十一题:分数求和

# 求最大公约数gys函数
def gys(a, b):
    while b != 0:
        c = a % b
        a,b = b,c
    return a

n = int(input('多少项n:')) -1
m = 0
for i in range(n+1):
    m += 2 ** i
num = gys(m, 2 ** n )
print(m // num , '/', 2 ** n // num, sep='') # sep字符串间分隔符

# m是分子的和,2**n 是分母,num是分子分母的公约数
# 输出:通过公约数约分后的分子分母(除完是浮点//相当于int)

''' 因为1/1 + 1/2 + ... + 1/2^19通分后
= 2^19/2^19 + 2^18/2^19 + ... + 1/2^19
则所有分子的和为2^19 + 2^18 + ... + 1 '''

第十二题:复数求和

n = int(input('要输入多少个复数n:'))
ls = [] #因为实部和虚部用链表存储,所以要放在同一个列表
for i in range(n):
    s = input('').strip().split()
    if s != '':
        ls.append(s)
        #print(ls) #遍历用print监测结果
        
real,imag = 0,0
for i1 in range(n):
    real += int(ls[i1][0])
    imag += int(ls[i1][1])
    #print(real,imag) #遍历用print监测结果
print('{}+{}i'.format(real,imag))

第十三题:龟兔赛跑预测

s = input('输入一行空格隔开的五个正整数v1,v2,t,s,l:')
s = s.strip().split()
v1,v2,t,s,l = map(int,s)

wg_time = l // v2 #乌龟不停下:最大时间=乌龟时间,给后面for秒数
tz_len,wg_len,flag = 0,0,0 #兔子,乌龟距离,哨兵flag
for i in range(1,wg_time+1):
    wg_len += v2
    if flag > 0:
        flag -= 1
    else:
        tz_len += v1
    if tz_len - wg_len >= t:
        flag = s


    if tz_len==wg_len>=l:
        print('D\n',i,sep='')
        break
    elif tz_len >=l and tz_len >wg_len:
        print('R\n',i,sep='')
        break
    elif wg_len >=l and wg_len >tz_len:
        print('T\n',i,sep='')
        break

第十四题:购物单取钱

'''题中文本提取修改后的 item.txt '''

180.90  0.88  
 10.25  0.65  
 56.14   0.90  
104.65   0.90  
100.30  0.88  
297.15  0.50  
 26.75  0.65  
130.62  0.50  
240.28  0.58  
270.62   0.80  
115.87  0.88  
247.34  0.95  
 73.21   0.90  
101.00  0.50  
 79.54  0.50  
278.44   0.70  
199.26  0.50  
 12.97   0.90  
166.30  0.78  
125.50  0.58  
 84.98   0.90  
113.35  0.68  
166.57  0.50  
 42.56   0.90  
 81.90  0.95  
131.78   0.80  
255.89  0.78  
109.17   0.90  
146.69  0.68  
139.33  0.65  
141.16  0.78  
154.74   0.80  
 59.42   0.80  
 85.44  0.68  
293.70  0.88  
261.79  0.65  
 11.30  0.88  
268.27  0.58  
128.29  0.88  
251.03   0.80  
208.39  0.75  
128.88  0.75  
 62.06   0.90  
225.87  0.75  
 12.89  0.75  
 34.28  0.75  
 62.16  0.58  
129.12  0.50  
218.37  0.50  
289.69  0.80 
'''————————————————————————————————————————————'''

f = open('item.txt','r')
sum = 0.00 #定义为浮点数
for i in f:
    ls = i.strip().split()
    #print(ls) #调试过程用print监测
    i = eval(ls[0]) * eval(ls[1])
    sum += i

f.close()
sum1 = round(sum,-2) #四舍五入round函数
##print(sum1,sum) #调试过程用print监测

if abs(sum1-sum) <50:
    sum = int(sum1 +100)
else:
    sum = int(sum1)
print(sum)

第十五题:换钞票,求数量

我个人是直接采用暴力做法(如下):

'''这样for的原因:当5块钱40张,是两百块钱
   条件:21*num1 + 5*num5 = 200'''

money = 200
ls = []

for num5 in range(1,41):
    yu = int( abs(money-5*num5) %21)
    if yu==0:
        num1 = abs(money-5*num5) //21
        if num1 != 0:
            all_num = 11*num1 + num5  #钞票数 = 11*num1 + num5
            ls.append(all_num) #筛选符合条件的钞票数量,加入列表
print(max(ls))

第十六题:矩形面积交(坐标系上)

s1 = input('输入两行,每行给出矩形一对相对顶点的坐标:\n')
s2 = input()
x1,y1,x2,y2 = map(int,s1.strip().split()) #矩形1的两点
x3,y3,x4,y4 = map(int,s2.strip().split()) #矩形2的两点

#判断矩形1位置是否在矩形2前面
if x1 < x3:
    a = max(x1,x2) - min(x3,x4)
    b = max(y1,y2) - min(y3,y4)
else:
    a = min(x1,x2) - max(x3,x4)
    b = min(y1,y2) - max(y3,y4)
s = a*b  #矩形面积S=长X宽(a*b)
print(s)

第十七题:数门牌号

num2 = 0
for i in range(1,2021):
    i = str(i)
    #num2 += i.count('2')
    for n in i:
        if n == '2':
            num2 += 1
print(num2)

第十八题:矩阵求和

def gcd(i, j):
    while j !=0:
        k = i % j
        i, j = j, k
    return i

n = int(input('表有n行n列:'))
sum = 0
mod = 10**9 + 7
for i in range(1, n+1):
    for j in range(1, n+1):
        t = gcd(i, j) ** 2
        sum += t % mod
print(sum)

第十九题:时间转换


t = int(input('输入一整数t(0<=t<=86399):'))
print('{}:{}:{}'.format(t//3600, t%3600//60, t%3600%60) )

第二十题:年号对应字串

##n = int(input('输入数字:'))
n = 2019
str= ''
 
while n != 0:
    t = n % 26 #取余获得该位英文(从后往前)对应字母表的位置
    str += chr(64+t)
    n = int(n / 26) #当n除以26小于1,结束循环
    
print(str[::-1]) #倒序输出从后往前获得的字母串

如果看不懂上面那一段代码的意思:看下图,相当于 该程序运行的步骤(清晰明了)

———————————————————感谢浏览————————————————————

》》》以上题目  和小部分答案,来自:寻找永不遗憾的博客_CSDN博客-深度学习基础知识,地平线开发板相关,目标检测系列领域博主

》》》笔者:小白非常的博客_CSDN博客-python,Django,后端领域博主

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值