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

目录

 第三十一题:寻找2020

第三十二题:杨辉三角形

第三十三题:叶节点数

第三十四题:音节判断

第三十五题:预测身高

第三十六题:约数个数

第三十七题:求最大质因数(分解)

第三十八题:饮料换购

第三十九题:刷题统计(统计刷题多少天完成)

第四十题:天干地支(感觉这题要花时间理解)


 第三十一题:寻找2020

'''2020.txt'''

220000
000000
002202
000000
000022
002020

def get_n(i,j): #为了防止超出索引,必须要try和except!
    n = 0
    try:
        if ls[i][j+1] =='0': #右边
            if ls[i][j+2] =='2':
                if ls[i][j+3] =='0':
                    n +=1
##                    print(ls[i][j+1],ls[i][j+2],ls[i][j+3])
    except IndexError:
        pass
    try:
        if ls[i+1][j] =='0': #下边
            if ls[i+2][j] =='2':
                if ls[i+3][j] =='0':
                    n +=1
##                    print(ls[i+1][j],ls[i+2][j],ls[i+3][j])
    except IndexError:
        pass
    try:
        if ls[i+1][j+1] =='0': #右下边
            if ls[i+2][j+2] =='2':
                if ls[i+3][j+3] =='0':
                    n +=1
##                    print(ls[i+1][j+1],ls[i+2][j+2],ls[i+3][j+3])
    except IndexError:
        pass
    
    return n



f = open('2020.txt','r')
ls = []
for i in f:
    ls.append(i.strip())
##print(ls)

num = 0
lens = len(ls)
for i in range(lens):
    leni = len(ls[i])
    for j in range(leni):
        if ls[i][j] =='2':
            num += get_n(i,j)

f.close()
print(num)

第三十二题:杨辉三角形

n = int(input('n行(1<=n<=34):'))
ls = []

for i in range(1,n+1): #生成结果列表的存储空间(用0代替)
    ls0 = []
    for j in range(i):
        ls0.append(0)
    ls.append(ls0)
##print(ls)

for i in range(n): #往存储空间赋值
    for j in range(len(ls[i])):
        if i+1 <=2 or j==0 or j==len(ls[i])-1: #12行或者每行的头尾元素都是1
            ls[i][j] = 1
        elif i+1 >2:
            ls[i][j] = ls[i-1][j-1]+ls[i-1][j]
##print(ls)


for i in range(n):
    ls[i] = list(map(str,ls[i])) #把列表的数字转化成字符串,方便输出
##print(ls)
for j in range(n):
    print(' '.join(ls[j]))

第三十三题:叶节点数

#'''直接输出答案'''

print((2019 +1)//2)


'''
先说一下,二叉树的性质:
》》叶子节点n0 = 度为2的节点数n2 +1
》》2019(N总) = 叶子节点N0 + 度为1的节点N1+ 度为2的节点N2
(单分支结点n1如果存在那么n1等于1,如果不存在n1等于0)


由上可得:n总 = n0 + n1 + (n0 -1)
现问的是,2019个节点的完全二叉树,最多叶子结点是多少?

n总 +1 = 2n0 + n1(所以此时n1应该取0,即 n0最大为 1010)
答:叶子结点最多有1010个。 
'''

  别忘了,二叉树的性质:  
  》》叶子节点n0 = 度为2的节点数n2 +1  
  》》2019(N总) = 叶子节点N0 + 度为1的节点N1+ 度为2的节点N2  
  (单分支结点n1如果存在那么n1等于1,如果不存在n1等于0)  

 

第三十四题:音节判断

s = input('一个单词,只小写字母:')
ls = ['a','e','i','o','u']
##print(ls)

ls0 = []  #单词根据拼音字母 分段的结果存入ls0
ls1,ls2 = [],[]  #辅音组ls1,元音组ls2
for i in range(len(s)):
    if s[i] not in ls:  #如果是辅音
        if ls2 != []:
            ls0.append(ls2)
            ls2 = []
        ls1.append(s[i])  #辅音加入列表ls1
    elif s[i] in ls:  #如果是元音
        if ls1 != []:
            ls0.append(ls1)  #前面是辅音 现遍历到元音了,辅音组加入ls0
            ls1 = []  #辅音组加入ls0之后清空ls1
        ls2.append(s[i])  #辅音加入列表ls2
        
    if i ==len(s)-1:  #结尾,往ls0加入最后一段音组
        if ls2 != []:
            ls0.append(ls2)
        elif ls1 != []:
            ls0.append(ls1)
##print(ls0)

if len(ls0)==4:  #如果输入单词s的音组分段刚好是“辅,元,辅,元”,那就刚好是4组
    print('yes')
else:
    print('no')

第三十五题:预测身高

sex,fh,mh = map(eval,input('空格分开的三个数:整数,小数,小数:').split())
##print(sex,fh,mh)

h_1,h_0 = 0.0, 0.0
if sex ==1:
    h_1 = (fh +mh)/2 *1.08
    print('{:.3f}'.format(h_1))
elif sex ==0:
    h_0 = (fh *0.923 +mh)/2
    print('{:.3f}'.format(h_0))

第三十六题:约数个数

题目描述:  1200000有多少个约数(只计算正约数)

  注意:约数就是因数的意思(只要%取余==0都算)【要注意对称性,到根号的那个整数结束】 

 关于约数,质数,质因数的补充说明可以看下面这个链接》》

蓝桥杯python题目:分解质因数【小白易懂!】[正负整数都可以,笔者提供函数办法]_小白非常的博客-CSDN博客

num= 0
# 【要注意对称性,到根号的那个整数结束】
for i in range(1, int(float(1200000)**0.5) +1):
    if 1200000 % i == 0:
        num+= 2
print(num)

第三十七题:求最大质因数(分解)

def fj(x):
    for i in range(2, int(x**0.5)+1):
        if x % i == 0:
            ls.append(i)
            fj(x // i)
            return
    ls.append(x)

 
n = int(input())
ls = []

fj(n)
print(max(ls))

第三十八题:饮料换购

n = int(input())
m = 0
while n:
    n -=1
    m +=1
    if m %3==0:
        m +=1

print(m)

第三十九题:刷题统计(统计刷题多少天完成)

a,b,n = map(int,input().strip().split())

week_do = a*5 +b*2 #坐满一个星期,能做多少
week = n //week_do #多少个能坐满一个星期的week

day = week *7
last_do = n -week*week_do #最后剩下那点
if last_do !=0:
  b_do = last_do -a*5

  if b_do >0: #如果周末要做
    a_day =5
    b_day = b_do //b
    if (b_do -b*b_day)/b >0:
      b_day +=1
  elif b_do <=0:
    b_day =0
    a_day = last_do //a
    if (last_do -a*a_day)/a >0:
      a_day +=1

else:
  a_day,b_day =0,0 #别忘记了else情况

day += a_day +b_day
print(day)

第四十题:天干地支(感觉这题要花时间理解)

'''根据2020的年份,先手算出来甲子是多少(2044),这样才可以正常列表索引'''


tian = ['jia','yi','bing','ding','wu','ji','geng','xin','ren','gui']
di = ['zi','chou','yin','mao','chen','si','wu','wei','shen','you','xu','hai']

n = int(input())
s = (n-2044) %60  # 这里一开始我加了绝对值 abs(),结果发现加了反而错?至于为什么我还不清楚

t = s %10
d = s %12
print(tian[t],di[d],sep='')

———————————————— Thanks♪(・ω・)ノ感谢阅读 ———————————————

》》》做法来自笔者个人:

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值