【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day01 | 门牌制作 | 真题代码解析
历经九九八十一难!今天,终于回到学校,才想起去年报考了蓝桥杯Python程序设计【研究生组】(貌似研究生和本科组的Python程序设计几乎每年都差不多),既然钱都花了,不能不努力吧,说干就干,每天刷一道题,话不多说,先刷近两年的题吧,从2020的开始,如果有一起的可以加入我们!!!
一起来刷题,冲击国赛!!!
2020年第十一届蓝桥杯赛题总览
2020年的题就是这些,类型分为两种,分别是结果填空和程序设计,我们每天刷一道题,省赛没问题!
门牌制作(题目)
(本题总分:5分)
—>【问题描述】
小蓝要为一条街的住户制作门牌号。
这条街一共有2020位住户,门牌号从1到2020编号。
小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017
需要依次粘贴字符1、0、1、7,即需要1个 字符0, 2个字符1, 1个字符7。
请问要制作所有的1到2020号门牌,总共需要多少个字符2?
—>【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解析
通过阅读题干,本题——难度较低。
由于是填空题,我们只需要得出一个结果即可。结果为一个整数。可以用数字数字分离,也可以用转换成字符串计数。
为了提高效率,我使用了转换字符串计数。
首先,我们最简单的实现,考虑的是遍历从1~2020个数字,然后依次检索出每个数字,转换成字符串(str())中包含2的个数(这里可以利用Python的内置函数—— .count() ),每次遍历获得2的个数后就将其存在一个计数器中(这里设置为-set),最后遍历完所有的数,输出计数器的值结果即可。
代码
Python代码实现:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/2/24 14:10
# @Author : 府学路18号车神
# @Email :yurz_control@163.com
# @File : Day01.py
num = 2021 # 终点
set = 0 # 计数器
for i in range(1, num):
res = str(i).count('2') # 转换遍历的数字 i 成字符串,然后利用内置函数count进行计数
set += res # 将每次计数的2的个数赋值给计数器
print("请问要制作所有的1到2020号门牌,总共需要多少个字符2?", set)
由此,我们可以快速的出结果为:624
- 点赞
- 收藏
- 关注作者
评论(0)