分享一些最近Python刷题的经验与思考
【摘要】 转化学习情绪学习Python一直都是从乐趣、兴趣出发,所以最讨厌做的事莫过于枯燥的刷题了。可公司新规定,每位员工需要在年底前完成5000分的编程答题任务,瞬间就不开心了。还好我是一个脑洞大的人,决定化愤怒为动力,想想什么能让我转化现在的情绪。然后….我发现每道题后面有个发帖讨论的栏位,在里面可以讨论解题思路,大家互相交流。就在一瞬间灵感来了,这不是个免费的广告栏目么。我把每道题的答案发到讨论...
转化学习情绪
学习Python一直都是从乐趣、兴趣出发,所以最讨厌做的事莫过于枯燥的刷题了。可公司新规定,每位员工需要在年底前完成5000分的编程答题任务,瞬间就不开心了。还好我是一个脑洞大的人,决定化愤怒为动力,想想什么能让我转化现在的情绪。然后….
我发现每道题后面有个发帖讨论的栏位,在里面可以讨论解题思路,大家互相交流。就在一瞬间灵感来了,这不是个免费的广告栏目么。我把每道题的答案发到讨论帖里,然后在上面备注上我的公众号地址,岂不是能稳稳的收割一波关注度。我都忍不住为自己的机智点赞啊,开心的下班后都不舍得走,坐在工位刷题到8点!
谈谈刷题思路
万事开头难,所以今天想跟大家聊聊刷题的心得与方式…
题型选择
对于新上手刷题的朋友来说,很容易因为挫败感而放弃。所以,建议大家还是从简单的题目入手。当然简单题目也有难度与分类,我们可以通过分类与名字先攻克自己擅长的。如果实在觉得有些困难,也可以借鉴别人的解题思路与代码后,再完成练习。
刷题目的
刷题的目的是让我们提升编程思路,学习更多算法,而非为了刷题而刷题。所以无需太关注刷题的数目,而要将重点放在解题思路上。另外每道题做完后,如果还有余力可以想象是否还有其他解题方式,也可以看看其他人的代码。
举个栗子!
昨天在刷题的时候,有一道题给自己印象很深,不是因为困难,反而是一道简单题,但就是因为太简单反而让人觉得思维固化,在这里分享给大家!
题目
题目原文忘记了,在这里简单说明下:
系统输入两个数字M、N,M为1-9的数字,N为系数。
eg:
输入 2 5,则需计算 2 22 222 2222 22222 的总和,即 24690
输入 1 3,则需计算 1 11 111 的总和,即 123
常规解法
初看这道题,第一个想法就是简单的数字循环叠加求和,无非考虑下10进制的乘数而已。解题如下:
def func():
M, N = map(int, input().split())
sum_number = number = 0
for i in range(N):
number += M * 10 ** i
sum_number += number
print(sum_number)
if __name__ == '__main__':
func()
灵活解法
上面的解法比较笨,但针对这道题,其实还有更为灵活的方法…
由于M是1—9之间的数字,所以先入为主的将M定义为了数字,但其实如果将M认为是字符串。那么2 --> 222 可以理解为int('2'*3)!这样思考后,题目是否变得更为简单了。解题如下:
def func():
M, N = input().split()
print(sum([int(M * i) for i in range(1, int(N) + 1)]))
if __name__ == '__main__':
func()
The End
本文来自:“清风Python”公众号
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)