问题:小蓝手里有0到9的卡片各2021张,共20210张,请问小蓝可以从1拼到多少?
思路:按照题目要求,采取提取信息变现的解决问题方法,首先我会考虑先获得20210张卡片,然后用while循环进行数字的叠加(不清楚具体哪个数字使用的次数最多),把数字转换为字符串,对数字进行遍历,实现获取各个数位上的数字,对出现的数字对照字典key值进行个数的删减操作,再结合if判断若value为0,给出break结束循环。
代码:
num_d = {}
for i in range(10):
num_d[str(i)] = 2021
i = 0
a = 0
while True:
i += 1
for j in str(i):
num_d[j] = num_d.get(j) - 1
if num_d.get(j) == 0:
a=1
if a==1:
print(i)
break
反思:对于给定的题目未进行分析,比如可以从使用最多的数字入手,就只需要考虑一个因素就可以。这样会减少代码量,跳过基本的没必要步骤进行的操作。