当前位置:   article > 正文

蓝桥杯python组简单题(内含题目、解答和知识点归纳)_蓝桥杯试题python

蓝桥杯试题python

第一题:

题目描述

小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。

如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。

请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。

输入描述

输入的第一行包含一个整数 � (1≤�≤104)n (1≤n≤104),表示考试人数。

接下来 �n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

输出描述

输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。

输入输出样例

示例

输入

  1. 7
  2. 80
  3. 92
  4. 56
  5. 74
  6. 88
  7. 100
  8. 0

输出

  1. 71%
  2. 43%
  1. import os
  2. import sys
  3. n = int(input())
  4. jige = 0
  5. youxiu = 0
  6. for i in range(n):
  7. a = int(input())
  8. if a>=60:
  9. jige += 1
  10. if a>=85:
  11. youxiu += 1
  12. jigelv = round(jige/n * 100) #ROUND 函数将数字四舍五入到指定的位数。
  13. youxiulv = round(youxiu/n * 100)
  14. print(f'{jigelv}%') # f' '格式化字符串,{}里为替换内容
  15. print(f'{youxiulv}%')

知识点归纳

1、ROUND 函数:将数字四舍五入到指定的位数

ROUND(number, num_digits)

ROUND 函数语法具有下列参数:

  • number    必需。 要四舍五入的数字。

  • num_digits    必需。 要进行四舍五入运算的位数。

备注

  • 如果 num_digits 大于 0(零),则将数字四舍五入到指定的小数位数。

  • 如果 num_digits 等于 0,则将数字四舍五入到最接近的整数。

  • 如果 num_digits 小于 0,则将数字四舍五入到小数点左边的相应位数。

  • 若要始终进行向上舍入(远离 0),请使用 ROUNDUP 函数。

  • 若要始终进行向下舍入(朝向 0),请使用 ROUNDDOWN 函数。

  • 若要将某个数字四舍五入为指定的倍数(例如,四舍五入为最接近的 0.5 倍),请使用 MROUND 函数。

示例

复制下表中的示例数据,然后将其粘贴进新的 Excel 工作表的 A1 单元格中。 要使公式显示结果,请选中它们,按 F2,然后按 Enter。 如果需要,可调整列宽以查看所有数据。

公式

说明

结果

=ROUND(2.15, 1)

将 2.15 四舍五入到一个小数位

2.2

=ROUND(2.149, 1)

将 2.149 四舍五入到一个小数位

2.1

=ROUND(-1.475, 2)

将 -1.475 四舍五入到两个小数位

-1.48

=ROUND(21.5, -1)

将 21.5 四舍五入到小数点左侧一位

20

=ROUND(626.3,-3)

将 626.3 四舍五入为最接近的 1000 的倍数

1000

=ROUND(1.98,-1)

将 1.98 四舍五入为最接近的 10 的倍数

0

=ROUND(-50.55,-2)

将 -50.55 四舍五入为最接近的 100 的倍数

-100

2、格式化字符串f()用法

f-string在形式上是以 f 或 F 修饰符引领的字符串(f'xxx' 或 F'xxx'),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。

简单使用

f-string用大括号 {} 表示被替换字段,其中直接填入替换内容:

  1. >>> name = 'Eric'
  2. >>> f'Hello, my name is {name}'
  3. 'Hello, my name is Eric'
  4. >>> number = 7
  5. >>> f'My lucky number is {number}'
  6. 'My lucky number is 7'
  7. >>> price = 19.99
  8. >>> f'The price of this book is {price}'
  9. 'The price of this book is 19.99'

 错误代码反思总结:

  1. import os
  2. import sys
  3. # 请在此输入您的代码
  4. n = int(input())
  5. jige = 0
  6. youxiu = 0
  7. for i in range(n):
  8. a = int(input())
  9. if a>=60:
  10. jige += 1
  11. jigelv = int(jige/n * 100)
  12. if a>=85:
  13. youxiu += 1
  14. youxiulv = int(youxiu/n * 100)
  15. print(str(jigelv) + '%')
  16. print(str(youxiulv) + '%')

INT()函数,是VFP数值函数的一种,是将一个要取整的实数(可以为数学表达式)向下取整为最接近的整数。利用INT函数可以返回一个小数的整数,如4.323,返回4,它不是四舍五入,而是舍尾法,即使4.987,也是返回4,而不是5 。

所以该种方法测试通过率仅30%。


第二题:

题目描述

小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。

现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。

输入描述

输入一行包含一个单词,单词只由小写英文字母组成。

对于所有的评测用例,输入的单词长度不超过 1000。

输出描述

输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。

第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。

输入输出样例

示例 1

输入

lanqiao

输出

  1. a
  2. 2

示例 2

输入

longlonglongistoolong

输出

  1. o
  2. 6

 代码

  1. import os
  2. import sys
  3. # 请在此输入您的代码
  4. word = input()
  5. a = 0
  6. b = []
  7. for i in word:
  8. c = word.count(i)
  9. if c >= a:
  10. a = c
  11. for j in word:
  12. if word.count(j) == a:
  13. b.append(j)
  14. b.sort()
  15. print(b[0])
  16. print(a)

知识点归纳

1、循环遍历字符串

甚至连字符串都是可迭代的对象,它们包含一系列的字符:

实例

循环遍历单词 "banana" 中的字母:

for x in "banana":
  print(x)

for循环运用和示例:Python For 循环 (w3school.com.cn)


第三题:

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝要为一条街的住户制作门牌号。

这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。

小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、71、0、1、7,即需要 11 个字符 00,22 个字符 11,11 个字符 77。

请问要制作所有的 11 到 20202020 号门牌,总共需要多少个字符 22?

代码

  1. import os
  2. import sys
  3. count = 0
  4. for i in range(1,2021):
  5. a = str(i)
  6. for j in a:
  7. if j == '2': #不能写成 j==2
  8. count += 1
  9. print(count)

【注意】这里最开始出现一个错误,if条件写成 j==2,但此处是字符类型,故要用单引号加以区别。


第四题:

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝有很多数字卡片,每张卡片上都是数字 00 到 99。

小蓝准备用这些卡片来拼一些数,他想从 11 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。

小蓝想知道自己能从 11 拼到多少。

例如,当小蓝有 3030 张卡片,其中 00 到 99 各 33 张,则小蓝可以拼出 11 到 1010,

但是拼 1111 时卡片 11 已经只有一张了,不够拼出 1111。

现在小蓝手里有 00 到 99 的卡片各 20212021 张,共 2021020210 张,请问小蓝可以从 11 拼到多少?

提示:建议使用计算机编程解决问题。

代码

  1. import os
  2. import sys
  3. #分析:1肯定是消耗最快的数字,所以只需要统计1出现的次数是否小于2021即可
  4. count=0 #计数
  5. i=1 #设置初值,循环累加遍历数列
  6. while True:
  7. count=str(i).count("1")+count #通过统计1的个数是不是达到了2021个就行,因为1肯定是消耗的最快的数字
  8. # print(count)
  9. if count==2021:
  10. print(i)
  11. break
  12. i=i+1

1、count = str(i).count("1")

统计字符串中指定字符出现的次数


第五题:

题目描述

小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。

请计算这次考试的最高分、最低分和平均分。

输入描述

输入的第一行包含一个整数 � (1≤�≤104)n (1≤n≤104),表示考试人数。

接下来 �n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

输出描述

输出三行。

第一行包含一个整数,表示最高分。

第二行包含一个整数,表示最低分。

第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。

输入输出样例

示例

输入

  1. 7
  2. 80
  3. 92
  4. 56
  5. 74
  6. 88
  7. 99
  8. 10

输出

  1. 99
  2. 10
  3. 71.29

代码

  1. import os
  2. import sys
  3. n = int(input())
  4. list = []
  5. for i in range(n):
  6. num = int(input())
  7. list.append(num)
  8. a = max(list)
  9. b = min(list)
  10. c = sum(list)/n
  11. print(a)
  12. print(b)
  13. print("{:.2f}".format(c))

此处注意format格式化输出的方式,保留两位小数:print("{:.2f}".format(c))


第六题:

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。

这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。

小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。

现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。

取款机只能提供 100100 元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。

以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。

  1. **** 180.90 88
  2. **** 10.25 65
  3. **** 56.14 9
  4. **** 104.65 9
  5. **** 100.30 88
  6. **** 297.15 半价
  7. **** 26.75 65
  8. **** 130.62 半价
  9. **** 240.28 58
  10. **** 270.62 8
  11. **** 115.87 88
  12. **** 247.34 95
  13. **** 73.21 9
  14. **** 101.00 半价
  15. **** 79.54 半价
  16. **** 278.44 7
  17. **** 199.26 半价
  18. **** 12.97 9
  19. **** 166.30 78
  20. **** 125.50 58
  21. **** 84.98 9
  22. **** 113.35 68
  23. **** 166.57 半价
  24. **** 42.56 9
  25. **** 81.90 95
  26. **** 131.78 8
  27. **** 255.89 78
  28. **** 109.17 9
  29. **** 146.69 68
  30. **** 139.33 65
  31. **** 141.16 78
  32. **** 154.74 8
  33. **** 59.42 8
  34. **** 85.44 68
  35. **** 293.70 88
  36. **** 261.79 65
  37. **** 11.30 88
  38. **** 268.27 58
  39. **** 128.29 88
  40. **** 251.03 8
  41. **** 208.39 75
  42. **** 128.88 75
  43. **** 62.06 9
  44. **** 225.87 75
  45. **** 12.89 75
  46. **** 34.28 75
  47. **** 62.16 58
  48. **** 129.12 半价
  49. **** 218.37 半价
  50. **** 289.69 8

需要说明的是,8888 折指的是按标价的 8888 计算,而 88 折是按 8080 计算,余者类推。 特别地,半价是按 5050 计算。

请输出小明要从取款机上提取的金额,单位是元。

 代码

方法一

  1. import math
  2. data = '''
  3. **** 180.90 88折
  4. **** 10.25 65折
  5. **** 56.14 9折
  6. **** 104.65 9折
  7. **** 100.30 88折
  8. **** 297.15 半价
  9. **** 26.75 65折
  10. **** 130.62 半价
  11. **** 240.28 58折
  12. **** 270.62 8折
  13. **** 115.87 88折
  14. **** 247.34 95折
  15. **** 73.21 9折
  16. **** 101.00 半价
  17. **** 79.54 半价
  18. **** 278.44 7折
  19. **** 199.26 半价
  20. **** 12.97 9折
  21. **** 166.30 78折
  22. **** 125.50 58折
  23. **** 84.98 9折
  24. **** 113.35 68折
  25. **** 166.57 半价
  26. **** 42.56 9折
  27. **** 81.90 95折
  28. **** 131.78 8折
  29. **** 255.89 78折
  30. **** 109.17 9折
  31. **** 146.69 68折
  32. **** 139.33 65折
  33. **** 141.16 78折
  34. **** 154.74 8折
  35. **** 59.42 8折
  36. **** 85.44 68折
  37. **** 293.70 88折
  38. **** 261.79 65折
  39. **** 11.30 88折
  40. **** 268.27 58折
  41. **** 128.29 88折
  42. **** 251.03 8折
  43. **** 208.39 75折
  44. **** 128.88 75折
  45. **** 62.06 9折
  46. **** 225.87 75折
  47. **** 12.89 75折
  48. **** 34.28 75折
  49. **** 62.16 58折
  50. **** 129.12 半价
  51. **** 218.37 半价
  52. **** 289.69 8折
  53. '''
  54. data = data.split()
  55. sum = 0
  56. for i in range(0,len(data),3):
  57. price = float(data[i+1])
  58. discount = data[i+2]
  59. if len(discount) == 2:
  60. if discount == "半价":
  61. discount = 0.5
  62. else:
  63. discount = float(discount[:-1])*0.1
  64. else:
  65. discount = float(discount[:-1])*0.01
  66. sum += price*discount
  67. print(math.ceil(sum/100)*100)

方法二:

用excel对数据处理一下,求和很快出结果,对office不太熟练,勿喷,说说我自己的做法:(小白一个 欢迎指正,互相学习。)

  1. 将数据复制进excel中,点数据中的分列,将文本分成3列

  2. 将折扣那一列文本中的“折”字替换掉,半折替换成5

  3. 再在旁边一列中输入前两个想要的格式如0.88 0.65,选中下一格 按ctrl+e 自动填充得到一列0.88 0.65 0.9等格式的数据。

  4. 最后就是基本的excel公式的运用指定格相乘 最后求和得到结果。

print(5200)

方法三:

  1. import os
  2. import sys
  3. print(input())#我忘了是哪个大神讲的,正确答案最后会拿出来作比较,所以直接等于输入就行

这个真的6,测试通过100%

其余小妙招:

填空题直接输出结果,可以手算、在excel中算,print()结果。

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

闽ICP备14008679号