之前一直分享Python的入门的知识,今天想和大家分享一些适合入门小白的题目,学习语言这个东西,我觉得没什么捷径,当具备一定的基础知识,只有通过题目巩固基础知识,不断的写代码。
我从leetcode上找了一些适合初学者的题目,大家和我一起刷一下,看看自己的基础知识有没有打扎实。
1.比如自然数10以下能被3或者5整除的有3,5,6,9,那么这些数字的和为23,现在求能被3或者5整除的1000以内数字的和。
print(sum([i for i in range(1,100) if i%3==0 or i%5==0]))
2318
代码解析:大家看我写的代码,用列表推导式一行代码就可以搞定,当然如果有不熟悉列表推导的可以看我前面写的文章,此外,代码中还用到两个内置函数——sum和range。
2.在一个数组中,移除指定的数字,并返回新的数组并从大到小排序,比如:
nums=[1,6,6,3,6,2,10,2,100],remove_num=6
要求返回时
nums=[1,2,3,10,100]
我写的代码是这样的:
list1 = list(filter(lambda n:n!=6,[1,6,6,3,6,2,10,2,100]))
print(sorted(list1))
代码解析:这行代码中有之前学到的匿名函数lambda,以及filter函数用于过滤掉不要的值,最后再用一个内置函数list,将元组转换成列表。最后再用内置函数sorted函数将新的列表从大小排序。
3.从排序好的任意数组列表里面删除重复元素(列表中元素数量未知)比如:
nums=[1,3,3,5,5,8,10,10,100,100]
#处理完之后是:[1,3,5,8,10,100]
nums = [1,3,3,5,5,8,10,10,100,100]
print(sorted(set(nums)))
代码解析:首先可以用比较容易记忆的内置函数set来实现,Python中set函数的作用是创建一个无序不重复元素集,可进行关系测试,删除重复数据。但我们也可以看出来,用set得到的结果是无序的,所以,最后需要用sorted函数排序一下就可以了。
当然,也可以按照下面代码中这种方法实现,这种方法得到的结果也是无序的,最后也需要用sorted函数排序一下。
nums1 = {}.fromkeys(nums).keys()
print(sorted(nums1))
[1, 3, 5, 8, 10, 100]
4.从排好序的数组里面,删除重复的元素,重复的数字最多能出现2次。
nums=[1,1,1,2,2,5],要求返回nums=[1,1,2,2,3]
我写的代码如下:
from collections import Counter
def question4(nums):
print(Counter(nums))
for k,v in Counter(nums).items():
if v >2:
nums.remove(k)
print(nums)
question4([1,1,1,2,2,3])
Counter({1: 3, 2: 2, 3: 1})
[1, 1, 2, 2, 3]
代码解析:因为要统计单个元素出现的次数,所以需要用到Counter函数,它的作用是在一个数组内,遍历所有元素,将元素出现的次数记下来,接着用for in遍历每一个元素,最后用内置函数remove移除出现次数大于2的数字。
5.给定2个字符串s1,s2,判定s2能否给s1做循环移位得到字符串的包含。比如:
s1='AABBCD',s2='CDAA'
代码解析:构建辅助字符串,利用额外的空间,根据这个思路,我写了两种不同函数,可以实现功能,代码如下:
def problem5(src_str,des_str):
new_str = src_str +src_str
if des_str in new_str:
return True
else:
return False
print(problem5('AABBCD','CDAA'))
def problem5():
s1 = 'AABBCD'
s2 = 'CDAA'
s3 = s1 + s1
if (len(s3) > len(s2)):
print(s3.find(s2))
return True
else:
print(s2.find(s3))
return False
print(problem5())
在写的第二种代码种,先构建辅助字符串,然后用len函数统计字符串的长度,与s2相比较,最后返回预期的值。这里需要提到find函数,它的作用是检测字符串中是否包含子字符串str,如果包含子字符串返回开始的索引值,否则返回-1。
今天的实战题目就这么多,我写的代码有时候很简洁,如果你的基础知识不扎实,就不一定看的懂,所以,我一直觉得学习语言,一定要在前期打好基础,把基础语法学扎实了,才能盖高楼。大家看完我写的代码后,最好自己再敲一遍,切莫眼高手低,有好的解法,欢迎一起交流学习。