曾经,“Python将纳入高考”的消息,狠狠地刷了朋友圈。
小程并没有持续关注这个消息,比如官方有出来确认吗?
但人们对于Python的火热关注度,还是引来众程序员热议。
虽然小程资历尚浅,但还是有话要说,就聊一聊python。
python是小程用过的最简易实用的一门语言,它所支持的众多第三方库更是让人惊喜(当然,有时会乱),这就举几个例子。
(1)查找文件 c语言的Cer们应该会同意,“遍历目录找出文件”,实现这样的功能都会很费劲,对吧?
那python是怎么做到的呢?代码如下:
#!/usr/bin/python import os def traverse(dirpath): files = os.listdir(dirpath) for file in files: fullpath = os.path.join(dirpath, file) if os.path.isdir(fullpath): traverse(fullpath) else: print fullpath
traverse(‘xxx/targetdir’)
是不是很简单?
而且,还没有提到glob的使用呢,用这个模块来查找文件,真是简单的很!
(2)读取文件 还记得c语言的getline吗,python有readlines,而且更易用。
比如,删除一个文件中的相邻而且重复的行(产生一个新的文件;一般排序后再删除重复行),可以这样写(性能都不在考虑范围内):
import os; def delduplicate(): fout = open(“newone.txt”, “a+”) alllines = open(“original.txt”).readlines() for i in range(len(alllines)-1): one=alllines[i][0:21] two=alllines[i+1][0:21] if one!=two: fout.write(alllines[i]) fout.write(alllines[len(alllines)-1])
(3)批量爬取 你还在用c语言的socket来组装吗?
python的urllib已经被广泛使用了。
比如,批量获取某某平台的歌曲,可以这样(注意红框内的调用就好):
(4)游戏 比如,写一个猜数字的游戏:
import random
secret=random.randint(0,100) temp=input(“请说出我想的数字:”); guess=int(temp) while guess!=secret: if guess>secret: print(“没有这么大,说个小的!”) else: if guess < secret: print(“太小了,说个大的!”) else: break temp=input(“猜错了,再来一次吧:”) guess=int(temp) print(“厉害,猜对了!”)
(5)数据结构 python的数据结构很实用。
比如“背包问题”的解决:
def knapsack(w, ws): “”” w –背包容量 ws –物品重量列表 [1, 3, ..] “”” ret = [] s = [] i = 0 cnt = len(ws) rest = w while s or i < cnt: # 栈为空或者还有得装 while i < cnt and rest > 0: # 还有得装且还有容量 if rest >= ws[i]: # 装得下就装 s.append(i) rest -= ws[i] i += 1 # 不管当前的是否装得下,都要尝试下一个 if rest == 0: ret.append(s[:]) # one solution i = s.pop() rest += ws[i] i += 1 return ret
(6)画图 最后,用一个心图来结束举例:
代码是这样的:
from turtle import * pensize(1) pencolor(‘red’) fillcolor(‘pink’) speed(5) up() goto(-30, 100) down() begin_fill() left(90) circle(120,180) circle(360,70) left(38) circle(360,70) circle(120,180) end_fill() up() goto(-100,-100) down()
那么,python就万能了吗?
小程觉得,pyhton是解释执行的语言,对于c/c++这些编译执行的语言,在运行速度上还是赶不上人家的,在某些场景并不适合用python来做开发。
但是,如果是从入门、培养编程兴趣(像c语言之类有太多细节要考虑而且还各种效果上的打折扣,是很打击人的!)、培养抽象设计、培养模块设计这个角度来考虑,小程是赞成小学生也来学习的!
更重要的是,同学们,你们又有机会打电脑了!想想当年小程打坦克时多么愉快啊!