当前位置:   article > 正文

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

蓝桥杯青少年python

目录

 第三十一题:寻找2020

第三十二题:杨辉三角形

第三十三题:叶节点数

第三十四题:音节判断

第三十五题:预测身高

第三十六题:约数个数

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

第三十八题:饮料换购

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

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


 第三十一题:寻找2020

  1. '''2020.txt'''
  2. 220000
  3. 000000
  4. 002202
  5. 000000
  6. 000022
  7. 002020
  1. def get_n(i,j): #为了防止超出索引,必须要try和except!
  2. n = 0
  3. try:
  4. if ls[i][j+1] =='0': #右边
  5. if ls[i][j+2] =='2':
  6. if ls[i][j+3] =='0':
  7. n +=1
  8. ## print(ls[i][j+1],ls[i][j+2],ls[i][j+3])
  9. except IndexError:
  10. pass
  11. try:
  12. if ls[i+1][j] =='0': #下边
  13. if ls[i+2][j] =='2':
  14. if ls[i+3][j] =='0':
  15. n +=1
  16. ## print(ls[i+1][j],ls[i+2][j],ls[i+3][j])
  17. except IndexError:
  18. pass
  19. try:
  20. if ls[i+1][j+1] =='0': #右下边
  21. if ls[i+2][j+2] =='2':
  22. if ls[i+3][j+3] =='0':
  23. n +=1
  24. ## print(ls[i+1][j+1],ls[i+2][j+2],ls[i+3][j+3])
  25. except IndexError:
  26. pass
  27. return n
  28. f = open('2020.txt','r')
  29. ls = []
  30. for i in f:
  31. ls.append(i.strip())
  32. ##print(ls)
  33. num = 0
  34. lens = len(ls)
  35. for i in range(lens):
  36. leni = len(ls[i])
  37. for j in range(leni):
  38. if ls[i][j] =='2':
  39. num += get_n(i,j)
  40. f.close()
  41. print(num)

第三十二题:杨辉三角形

  1. n = int(input('n行(1<=n<=34):'))
  2. ls = []
  3. for i in range(1,n+1): #生成结果列表的存储空间(用0代替)
  4. ls0 = []
  5. for j in range(i):
  6. ls0.append(0)
  7. ls.append(ls0)
  8. ##print(ls)
  9. for i in range(n): #往存储空间赋值
  10. for j in range(len(ls[i])):
  11. if i+1 <=2 or j==0 or j==len(ls[i])-1: #12行或者每行的头尾元素都是1
  12. ls[i][j] = 1
  13. elif i+1 >2:
  14. ls[i][j] = ls[i-1][j-1]+ls[i-1][j]
  15. ##print(ls)
  16. for i in range(n):
  17. ls[i] = list(map(str,ls[i])) #把列表的数字转化成字符串,方便输出
  18. ##print(ls)
  19. for j in range(n):
  20. print(' '.join(ls[j]))

第三十三题:叶节点数

  1. #'''直接输出答案'''
  2. print((2019 +1)//2)
  3. '''
  4. 先说一下,二叉树的性质:
  5. 》》叶子节点n0 = 度为2的节点数n2 +1
  6. 》》2019(N总) = 叶子节点N0 + 度为1的节点N1+ 度为2的节点N2
  7. (单分支结点n1如果存在那么n1等于1,如果不存在n1等于0)
  8. 由上可得:n总 = n0 + n1 + (n0 -1)
  9. 现问的是,2019个节点的完全二叉树,最多叶子结点是多少?
  10. n总 +1 = 2n0 + n1(所以此时n1应该取0,即 n0最大为 1010)
  11. 答:叶子结点最多有1010个。
  12. '''

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

 

第三十四题:音节判断

  1. s = input('一个单词,只小写字母:')
  2. ls = ['a','e','i','o','u']
  3. ##print(ls)
  4. ls0 = [] #单词根据拼音字母 分段的结果存入ls0
  5. ls1,ls2 = [],[] #辅音组ls1,元音组ls2
  6. for i in range(len(s)):
  7. if s[i] not in ls: #如果是辅音
  8. if ls2 != []:
  9. ls0.append(ls2)
  10. ls2 = []
  11. ls1.append(s[i]) #辅音加入列表ls1
  12. elif s[i] in ls: #如果是元音
  13. if ls1 != []:
  14. ls0.append(ls1) #前面是辅音 现遍历到元音了,辅音组加入ls0
  15. ls1 = [] #辅音组加入ls0之后清空ls1
  16. ls2.append(s[i]) #辅音加入列表ls2
  17. if i ==len(s)-1: #结尾,往ls0加入最后一段音组
  18. if ls2 != []:
  19. ls0.append(ls2)
  20. elif ls1 != []:
  21. ls0.append(ls1)
  22. ##print(ls0)
  23. if len(ls0)==4: #如果输入单词s的音组分段刚好是“辅,元,辅,元”,那就刚好是4组
  24. print('yes')
  25. else:
  26. print('no')

第三十五题:预测身高

  1. sex,fh,mh = map(eval,input('空格分开的三个数:整数,小数,小数:').split())
  2. ##print(sex,fh,mh)
  3. h_1,h_0 = 0.0, 0.0
  4. if sex ==1:
  5. h_1 = (fh +mh)/2 *1.08
  6. print('{:.3f}'.format(h_1))
  7. elif sex ==0:
  8. h_0 = (fh *0.923 +mh)/2
  9. print('{:.3f}'.format(h_0))

第三十六题:约数个数

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

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

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

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

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

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

  1. def fj(x):
  2. for i in range(2, int(x**0.5)+1):
  3. if x % i == 0:
  4. ls.append(i)
  5. fj(x // i)
  6. return
  7. ls.append(x)
  8. n = int(input())
  9. ls = []
  10. fj(n)
  11. print(max(ls))

第三十八题:饮料换购

  1. n = int(input())
  2. m = 0
  3. while n:
  4. n -=1
  5. m +=1
  6. if m %3==0:
  7. m +=1
  8. print(m)

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

  1. a,b,n = map(int,input().strip().split())
  2. week_do = a*5 +b*2 #坐满一个星期,能做多少
  3. week = n //week_do #多少个能坐满一个星期的week
  4. day = week *7
  5. last_do = n -week*week_do #最后剩下那点
  6. if last_do !=0:
  7. b_do = last_do -a*5
  8. if b_do >0: #如果周末要做
  9. a_day =5
  10. b_day = b_do //b
  11. if (b_do -b*b_day)/b >0:
  12. b_day +=1
  13. elif b_do <=0:
  14. b_day =0
  15. a_day = last_do //a
  16. if (last_do -a*a_day)/a >0:
  17. a_day +=1
  18. else:
  19. a_day,b_day =0,0 #别忘记了else情况
  20. day += a_day +b_day
  21. print(day)

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

  1. '''根据2020的年份,先手算出来甲子是多少(2044),这样才可以正常列表索引'''
  2. tian = ['jia','yi','bing','ding','wu','ji','geng','xin','ren','gui']
  3. di = ['zi','chou','yin','mao','chen','si','wu','wei','shen','you','xu','hai']
  4. n = int(input())
  5. s = (n-2044) %60 # 这里一开始我加了绝对值 abs(),结果发现加了反而错?至于为什么我还不清楚
  6. t = s %10
  7. d = s %12
  8. print(tian[t],di[d],sep='')

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/64086
推荐阅读
相关标签
  

闽ICP备14008679号