9月11日
1.用List实现Python里的?:条件表达式
["false","true"][判断条件]
其实就是一个List[0]还是List[1]的问题。条件成立就是List[1],不成立就是List[0];非常简单。
2.用Python写一个冒泡排序
def mySort(List): for j in range(len(List)): flag=1 for i in range(len(List)-j-1): if(List[i+1]>List[i]): List[i],List[i+1]=List[i+1],List[i] flag=0 if(flag): break return List
今天比较有兴致,再学一点。
3.倒序输出一个字符串
word1="hello world" word2="" for i in range(len(word1)): word2+=word[-1-i] print(word2)
更简单的方法
print(word[::-1])
本质:第一个参数是开始位置,第二个参数是长度,第三个参数是步场,第三个参数设置成负数就倒着开始分,就是从后往前啦。List也可以用这种片分来倒序。
9月12日
1.输出一个字典里所有的Key,用“,”分割。
result="" for k,v in worker.items(): result+=k+"," print(result[:len(result)-1])
没想到比较好的方法去掉最后一个",",只好这样啦。
2.读取一个txt文件
file1=open("D:/8m.txt") lines1=file1.readlines(100) for line in lines1: print(line)
3.输出100以内的素数和合数
开始的想法是判断是否能整除2到n**1/2的数字,代码就不写了,跟c语言差不多。
想用Python比较独特的List分片来做。代码如下
def SuShu(num): list1=[i for i in range(0,num)] list2=[] list3=[1] for j in range(2,num): if j not in list2: list2+=list1[j::j][1:] list3.append(j) return [list2,list3]
List1里面是所有0-100的数字,把素数放到List3里面,把他的倍数放到List2里,最后就都分开了。但应该效率不高。
仔细找了找,找到了List相减的办法,吃饭回来写新方法。
9月13日
1.输出100以内的素数和合数(续)
接上文,昨天吃过饭下大雨没来。囧,最后发现所谓List相减的方法是把List转为set相减再转回List。
所以,干脆直接用set吧。利用set的union(联合), difference(差)来实现。代码如下
def SuShu(num): set1={i for i in range(2,num)}/*这里存素数*/ set2=set()/*这里存合数*/ for j in set1: set2= set2 | {i for i in range(j**2,num,j)} /*从j的平方开始,以J为步长,取出所有的 J的倍数然后和已有的合数集相并,自己就剔除了 重复的那一部分数字*/ set1= set1-set2 /*然后在素数集里面把合数都取掉,下次循环就直接 从下一个素数开始了*/ return [set1,set2]
中间发现一个问题,set2={}产生的是一个dict,只能用set2=set()来创建空集合,利用了range(起始值,最终值,步长)生成一个集合,然后并集去重复。应该还有更好的办法,暂时没想到。
9月16日
中间差了两天没更新,这两天学了些Python面向对象的基础,但是项目太忙,没想好用什么例子来展示我学的。。囧。想写一个简单工场模式,没成功。完了回头再补这部分知识吧。
昨晚逛学校网站,发现体测网站有注入漏洞,摸索好久,然后注入进去导出了一大堆同学的数据。。。打算用python和这些数据做点什么。
目前的规划是,先学python处理分析文件,把那些html里的数据提取出来,按地区分出来,再学python的web应用,做个查询同校老乡的网页。
由于时间原因,可能进度会很慢,但尽量坚持更新进度到博客上来。