查看原文
其他

两件事|小密圈送红包了

xinxin 菜鸟学Python 2020-11-17

阅读本文大概需要2分钟


小密圈发红包了

     不知道大家是否还记得,我当时开通小密圈的时候就说过,小密圈是希望汇集一批喜欢Python,热爱Python的小伙伴,大家一起学习,一起加油.对于那些优秀的小伙伴,我承诺过,每个月底给10名小伙伴发现金红包,金额分5个等级从36.8-10.8不等.钱不是很多一点心意,希望鼓励大家多多分享,提高自己的同时也帮助了其他人.



有同学很好奇,不是两件事吗还有一件事呢!上个月我们小密圈举办第一次的训练营活动. 第一次的训练营从基础开始练起来,通过实战做题,提高自己的功力。有很多同学积极参与了,这里我分享一下我们的题目和答案,希望对其他没有入群的小伙伴也能有一些帮助和启发.也欢迎大家指正!



第一题

比如自然数10以下能被3或者5整除的有,3,5,6和9,那么这些数字的和为23.

求能被3或者5整除的1000以内数字的和


点评:

这道题的解法很多,可以用for循环搞定,但是比较简洁的方法是用推到列表一行搞定



第二题

在一个数组指定数组里面移除指定的数字,并返回新的数组并从大到小排序

比如:

nums=[1,6,6,3,6,2,10,2,100],remove_num=6

要求返回时nums=[1, 2, 3, 10, 100]


点评:

这道题可以用for循环,然后判断一下,把不是6的数字存入一个新的列表,然后返回,然后在排序。比较简洁的做法是用filter函数,这是Python中的一个非常常用的高阶函数,一招搞定!


第三题

从排序好的任意数组列表里面删除重复元素(你不知道列表里面有多少个重逢的元素)

比如:nums=[1,3,3,5,5,8,10,10,100,100],处理完之后是:[1, 3, 5, 8, 10, 100]


点评:

这道题有很多小伙伴有不同的解法,有的用nums.count()来判断,也有的用find,还有的用for循环然后再过滤。其实对于去重,Python里面的集合是一个非常简便的操作.

print sorted(set(nums))
>>[1, 3, 5, 8, 10, 100]


第四题

从排好序的数组里面,删除重复的元素.重复的数字最多只能出现2次

nums=[1,1,1,2,2,5] ,要求返回nums=[1,1,2,2,3]


点评:

常规的解法,一定是两层循环,然后记录每一个数字的重复次数,超过2次该数字remove掉,有没有更简便的方法呢,大概是用轮子.就是Python自带的库,collection.count(),一招搞定!



第五题

给定2个字符串s1,s2,判定s2能否给s1做循环移位得到字符串的包含。比如:

s1="AABBCD",s2="CDAA".要求2种解法


点评:

这道题看起来很复杂,仔细想想其实每个字母循环移位到最右边,不断的移位,到最后就变成AABBCDAABBCC,然后只要判断一些s2在不在里面就行了.



第六题

给定一个字符串,寻找没有字符串重复的最长子字符串.

比如:"abcabcbb" 找到的是"abc",长度为3,比如"bbbbb"找到的是"b",长度为1


点评:

这道题很多人想到的是多次循环,然后存到一个列表里面,然后再判断长度最大的一个字符组。其实我也是这样想的,不过我觉得用生成器可能更简单一点.



第七题

有一串长的字符串 names="LI XIA  ,ZHAO MING  ,LAO WANG *,DA XIONG >,LI MEI MEI,CHANG JIANG,LI QIANG,ZHANG WU JI,ZHANG SAN FENG,DU GU QIU BAI,QIAO FENG"

要求:

1).过滤出所以的名字,去掉每个名字的左右的空格和乱码,每个名字的首字母大小

比如'LAO WANG *',处理成'Lao wang'

2).统计出所以名字里面名字最常的

3).统计出同姓的人名单


点评:

这是一个很典型的字符串处理和正则表达式的综合运用的例子,解法应该很多,不过其实只要2行就可以搞定!


第八题

数字1到5可以被写成:one,two,three,four,five,因此这些字母的总长度为:

3+3+5+4+4=19,现在求序列1到1000(包括1000),这些数字写成单词,总长度为多少


点评:

这道题其实把列表,字典和函数都综合运用了一下,然后稍微有一点点的算法在里面.对于初学者来说是一个非常好的练手的实战例子!


先设定一个英文字母对应数字mapping的字典:


然后根据数字的大小循环判断一下,最后求和!



结论:


第一期训练营的8道题目还是比较简单的,适合新手练习,也是希望大家打好基础。Python入门容易,精通难!后面的训练营会逐渐增加难度和趣味性,也是希望大家一起参与,有的时候一个人学编程,很枯燥也很寂寞,遇到问题也许知道的人几分钟,不知道的要走很多弯路! 你跟一个人交流收获的是一份知识,你跟100人交流,收获的是100份的知识.


目前小密圈里200人还差22名,超过200人会再次涨价的


 长按二维码,加入小密圈



来源 | 菜鸟学Python

作者 | xinxin

本文章为菜鸟学Python独家原创稿件,未经授权不得转载




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存