diff --git a/jasonlz/0000/add_element.py b/jasonlz/0000/add_element.py new file mode 100755 index 00000000..2bd00358 --- /dev/null +++ b/jasonlz/0000/add_element.py @@ -0,0 +1,17 @@ +# coding=utf-8 +# 第 0000 题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 + +from PIL import Image, ImageDraw, ImageFont + +def add_num(image, num): + img = Image.open(image) + x,y = img.size + draw = ImageDraw.Draw(img) + + afront = ImageFont.truetype('arial.ttf', x/4) + draw.text((3*x/4,0), str(num), (0,0,0), afront) + del draw + img.save('result.jpg') + img.show(); +if __name__ == '__main__': + add_num('profile.jpg',99) \ No newline at end of file diff --git a/jasonlz/0000/arial.ttf b/jasonlz/0000/arial.ttf new file mode 100644 index 00000000..ff0815cd Binary files /dev/null and b/jasonlz/0000/arial.ttf differ diff --git a/jasonlz/0000/profile.jpg b/jasonlz/0000/profile.jpg new file mode 100644 index 00000000..578eebf5 Binary files /dev/null and b/jasonlz/0000/profile.jpg differ diff --git a/jasonlz/0000/result.jpg b/jasonlz/0000/result.jpg new file mode 100644 index 00000000..968498e5 Binary files /dev/null and b/jasonlz/0000/result.jpg differ diff --git a/jasonlz/0001/0001.py b/jasonlz/0001/0001.py new file mode 100644 index 00000000..4111321a --- /dev/null +++ b/jasonlz/0001/0001.py @@ -0,0 +1,19 @@ +# coding=utf-8 +# 第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销, +# 为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? +import random, string + +def random_key(length=7): + con = string.digits + string.letters + s = [random.choice(con) for i in range(length)] + s = ''.join(s) + return s + +def save(number): + f = open('random_key.out','wd') + for i in range(number): + s = random_key(); + f.write(str(s)+'\n') + f.close() +if __name__ == '__main__': + save(200) \ No newline at end of file diff --git a/jasonlz/0001/random_key.out b/jasonlz/0001/random_key.out new file mode 100644 index 00000000..ee4a2f27 --- /dev/null +++ b/jasonlz/0001/random_key.out @@ -0,0 +1,200 @@ +ixOc0LD +BGuE0XD +C7HaFRG +0wxgh88 +bBlsMdm +p8LNUej +CgOMSTF +09kMv0n +NPhyUux +ozGjrp0 +ZOomZRs +9jCOhlM +nCErYkB +ddHJ0oU +6gcf7G8 +5Tx6vT9 +u55W03r +0mqSB8j +P21Y1zC +GbTO7dC +rdiH0NA +2VJ62LI +agKZx8v +8Bt4Yvy +KhaUHUr +4tRu5dK +v8qF5ji +3dbVxnh +EfRyow4 +SMBM8Gs +coXEyaz +7CMPO2P +IrOERhN +3kb6N0H +l0505Rl +Gp6n3dO +6fy43d8 +7vWGtfs +cVifXBA +uRmqUr8 +STefIKi +GksM33q +Pf5Y2lo +KFHNVAB +zklf5ZK +ZtL4ZzH +zb59W3R +jUWu0DF +GDlY7FU +iedSowI +4Xtw3hw +Vpey8Tf +9O9Xbxp +TxKlwZg +ha0TsB4 +bcX9mOe +JryHdAz +2YKevqs +Ez9M9tU +B6EoARF +x2wJtnE +OcMvrXS +dza1mAA +suaffof +zvIz52O +CpBFYx7 +G1HQtxv +Np9C51M +rlGVWpX +Ss5xgGQ +U7jTTCx +Pc2Ax6n +yj9UV8M +anba5KN +qKKsyMG +e9BNQat +CSzNHqo +jSbjoM5 +6xa4nWg +Q9NuTi0 +kbxYoWe +79MxDhJ +2b3IQQP +hvovFac +4p11Rri +IhUf6cM +MOUEjO6 +FqIWMCW +T2rvnf4 +7Mykkgn +96TRJPb +R78jdKh +0cOUPjc +pjLRtjo +X6YIawk +zIm1IPB +Y77mRVI +nA29nzQ +MlDTuLi +bXeTNGN +OYdYbFy +GgrIxvk +euXQREK +T9C7AUM +8DaHQMh +LEsihOb +b20JZ7q +vDMvZd2 +cjmZz1E +zDPY7P3 +PjkCpAp +0bZcPD1 +uGD2eh2 +CZZ2KhM +AKoqcJh +CdJl9JP +0TnZHlt +Zmb8J1L +TmyrcEx +QFnrdvD +hO4uyq7 +BOkZT9s +3JTYLIl +nsbXoCL +dSQI4dP +sRIid7j +mpUddNY +hGygXau +SaUwULa +582tSOp +ixXvkCq +VGbKmjU +755czbV +oSevj8n +cnptw3h +k8lotHK +cEHZPDD +ersEihK +p8JXl0B +eNe0zBU +7zAiUoC +QcLKEaC +dBZnAgm +G4Ltnue +ogaYZFI +TKfqU1r +zR4de08 +0s2G7df +FxJ2LGk +OtserfU +xGbCMCS +CTxX5ua +5EOcSbW +DthA2pQ +9uJhiFj +JLS8Iyi +D2l44kO +0No9dZT +7yRAt53 +Ksd2XY8 +9nPJUN4 +v6ojM9h +vwRndEG +Am8WiOw +YDsPlv1 +Tq0NXZA +3QeUUSQ +Rb6gIe7 +oWj1Cbu +VaRTiVO +33XIqux +vP343k7 +OGPZbpq +alSsc7o +fNXZ1QF +2XxSsty +qitfdZC +AJa4I6t +ifhsCnz +UThoWoh +zcgDNGv +xOPiD0v +v46KZjc +Pt7WVeB +RC7oe03 +GkAe5D7 +pHI0kGi +vqzccWF +uJLAtpJ +E54X0Ga +3KjM6eJ +4OTQQUV +k0WSXpB +fWaUcI2 +CFsUapu +qNTXFQD +7NGJ9yx +KWOHXnz +PQ64SAi +IM5ve5a diff --git a/jasonlz/0003/0003.py b/jasonlz/0003/0003.py new file mode 100644 index 00000000..fdb2d6cc --- /dev/null +++ b/jasonlz/0003/0003.py @@ -0,0 +1,28 @@ +# coding=utf-8 +#**第 0003 题:**将 0001 题生成的 200 个激活码(或者优惠券)保存到 **Redis** 非关系型数据库中。 + +import redis + +def read_line(file): + f = open(file,'r') + lines = f.readlines() + for i in range(len(lines)): + lines[i] = lines[i].strip() + return lines + +def redis_save(): + lines = read_line('random_key.out') + r = redis.StrictRedis(host = '127.0.0.1', port = 6379, db = 0) + + for i in range(len(lines)): + key = str(i+1) + value = str(lines[i]) + r.set(key, value) + print 'ok' + r.save() + for i in range(len(lines)): + print r.get(i) + print 'OK!' + +if __name__ == '__main__': + redis_save() \ No newline at end of file diff --git a/jasonlz/0003/random_key.out b/jasonlz/0003/random_key.out new file mode 100644 index 00000000..ee4a2f27 --- /dev/null +++ b/jasonlz/0003/random_key.out @@ -0,0 +1,200 @@ +ixOc0LD +BGuE0XD +C7HaFRG +0wxgh88 +bBlsMdm +p8LNUej +CgOMSTF +09kMv0n +NPhyUux +ozGjrp0 +ZOomZRs +9jCOhlM +nCErYkB +ddHJ0oU +6gcf7G8 +5Tx6vT9 +u55W03r +0mqSB8j +P21Y1zC +GbTO7dC +rdiH0NA +2VJ62LI +agKZx8v +8Bt4Yvy +KhaUHUr +4tRu5dK +v8qF5ji +3dbVxnh +EfRyow4 +SMBM8Gs +coXEyaz +7CMPO2P +IrOERhN +3kb6N0H +l0505Rl +Gp6n3dO +6fy43d8 +7vWGtfs +cVifXBA +uRmqUr8 +STefIKi +GksM33q +Pf5Y2lo +KFHNVAB +zklf5ZK +ZtL4ZzH +zb59W3R +jUWu0DF +GDlY7FU +iedSowI +4Xtw3hw +Vpey8Tf +9O9Xbxp +TxKlwZg +ha0TsB4 +bcX9mOe +JryHdAz +2YKevqs +Ez9M9tU +B6EoARF +x2wJtnE +OcMvrXS +dza1mAA +suaffof +zvIz52O +CpBFYx7 +G1HQtxv +Np9C51M +rlGVWpX +Ss5xgGQ +U7jTTCx +Pc2Ax6n +yj9UV8M +anba5KN +qKKsyMG +e9BNQat +CSzNHqo +jSbjoM5 +6xa4nWg +Q9NuTi0 +kbxYoWe +79MxDhJ +2b3IQQP +hvovFac +4p11Rri +IhUf6cM +MOUEjO6 +FqIWMCW +T2rvnf4 +7Mykkgn +96TRJPb +R78jdKh +0cOUPjc +pjLRtjo +X6YIawk +zIm1IPB +Y77mRVI +nA29nzQ +MlDTuLi +bXeTNGN +OYdYbFy +GgrIxvk +euXQREK +T9C7AUM +8DaHQMh +LEsihOb +b20JZ7q +vDMvZd2 +cjmZz1E +zDPY7P3 +PjkCpAp +0bZcPD1 +uGD2eh2 +CZZ2KhM +AKoqcJh +CdJl9JP +0TnZHlt +Zmb8J1L +TmyrcEx +QFnrdvD +hO4uyq7 +BOkZT9s +3JTYLIl +nsbXoCL +dSQI4dP +sRIid7j +mpUddNY +hGygXau +SaUwULa +582tSOp +ixXvkCq +VGbKmjU +755czbV +oSevj8n +cnptw3h +k8lotHK +cEHZPDD +ersEihK +p8JXl0B +eNe0zBU +7zAiUoC +QcLKEaC +dBZnAgm +G4Ltnue +ogaYZFI +TKfqU1r +zR4de08 +0s2G7df +FxJ2LGk +OtserfU +xGbCMCS +CTxX5ua +5EOcSbW +DthA2pQ +9uJhiFj +JLS8Iyi +D2l44kO +0No9dZT +7yRAt53 +Ksd2XY8 +9nPJUN4 +v6ojM9h +vwRndEG +Am8WiOw +YDsPlv1 +Tq0NXZA +3QeUUSQ +Rb6gIe7 +oWj1Cbu +VaRTiVO +33XIqux +vP343k7 +OGPZbpq +alSsc7o +fNXZ1QF +2XxSsty +qitfdZC +AJa4I6t +ifhsCnz +UThoWoh +zcgDNGv +xOPiD0v +v46KZjc +Pt7WVeB +RC7oe03 +GkAe5D7 +pHI0kGi +vqzccWF +uJLAtpJ +E54X0Ga +3KjM6eJ +4OTQQUV +k0WSXpB +fWaUcI2 +CFsUapu +qNTXFQD +7NGJ9yx +KWOHXnz +PQ64SAi +IM5ve5a diff --git a/jasonlz/README.md b/jasonlz/README.md new file mode 100644 index 00000000..01717403 --- /dev/null +++ b/jasonlz/README.md @@ -0,0 +1,201 @@ +## Python 练习册,每天一个小程序 ## + + +#### 说明: #### + +- Python 练习册,每天一个小程序。注:将 Python 换成其他语言,大多数题目也适用 +- 不会出现诸如「打印九九乘法表」、「打印水仙花」之类的题目 +- 本文本文由@史江歌(shijiangge@gmail.com QQ:499065469)根据互联网资料收集整理而成,感谢互联网,感谢各位的分享。鸣谢!本文会不断更新。 +- 欢迎大家 Pull Request 出题目,贴代码(Gist、Blog皆可):-) +- 欢迎解答, 并发送 pull request 到 [Show-Me-the-Code](https://github.com/Show-Me-the-Code/python) + +> Talk is cheap. Show me the code.--Linus Torvalds + +---------- + +**第 0000 题:**将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 +类似于图中效果 + +![头像](http://i.imgur.com/sg2dkuY.png?1) + +**第 0001 题:**做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用**生成激活码**(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? + +**第 0002 题**:将 0001 题生成的 200 个激活码(或者优惠券)保存到 **MySQL** 关系型数据库中。 + +**第 0003 题:**将 0001 题生成的 200 个激活码(或者优惠券)保存到 **Redis** 非关系型数据库中。 + +**第 0004 题:**任一个英文的纯文本文件,统计其中的单词出现的个数。 + +**第 0005 题:**你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。 + +**第 0006 题:**你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。 + +**第 0007 题:**有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。 + +**第 0008 题:**一个HTML文件,找出里面的**正文**。 + +**第 0009 题:**一个HTML文件,找出里面的**链接**。 + +**第 0010 题:**使用 Python 生成类似于下图中的**字母验证码图片** + +![字母验证码](http://i.imgur.com/aVhbegV.jpg) + +- [阅读资料](http://stackoverflow.com/questions/2823316/generate-a-random-letter-in-python) + +**第 0011 题:** 敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,否则打印出 Human Rights。 + + 北京 + 程序员 + 公务员 + 领导 + 牛比 + 牛逼 + 你娘 + 你妈 + love + sex + jiangge + +**第 0012 题:** 敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好城市」。 + +**第 0013 题:** 用 Python 写一个爬图片的程序,爬 [这个链接里的日本妹子图片 :-)](http://tieba.baidu.com/p/2166231880) + +- [参考代码](http://www.v2ex.com/t/61686 "参考代码") + +**第 0014 题:** 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: + + { + "1":["张三",150,120,100], + "2":["李四",90,99,95], + "3":["王五",60,66,68] + } + +请将上述内容写到 student.xls 文件中,如下图所示: + +![student.xls](http://i.imgur.com/nPDlpme.jpg) + +- [阅读资料](http://www.cnblogs.com/skynet/archive/2013/05/06/3063245.html) 腾讯游戏开发 XML 和 Excel 内容相互转换 + +**第 0015 题:** 纯文本文件 city.txt为城市信息, 里面的内容(包括花括号)如下所示: + + { + "1" : "上海", + "2" : "北京", + "3" : "成都" + } + +请将上述内容写到 city.xls 文件中,如下图所示: + +![city.xls](http://i.imgur.com/rOHbUzg.png) + + +**第 0016 题:** 纯文本文件 numbers.txt, 里面的内容(包括方括号)如下所示: + + [ + [1, 82, 65535], + [20, 90, 13], + [26, 809, 1024] + ] + +请将上述内容写到 numbers.xls 文件中,如下图所示: + +![numbers.xls](http://i.imgur.com/iuz0Pbv.png) + +**第 0017 题:** 将 第 0014 题中的 student.xls 文件中的内容写到 student.xml 文件中,如 + +下所示: + + + + + + { + "1" : ["张三", 150, 120, 100], + "2" : ["李四", 90, 99, 95], + "3" : ["王五", 60, 66, 68] + } + + + +- [阅读资料](http://www.cnblogs.com/skynet/archive/2013/05/06/3063245.html) 腾讯游戏开发 xml 和 Excel 相互转换 + +**第 0018 题:** 将 第 0015 题中的 city.xls 文件中的内容写到 city.xml 文件中,如下所示: + + + + + + { + "1" : "上海", + "2" : "北京", + "3" : "成都" + } + + + +**第 0019 题:** 将 第 0016 题中的 numbers.xls 文件中的内容写到 numbers.xml 文件中,如下 + +所示: + + + + + + + [ + [1, 82, 65535], + [20, 90, 13], + [26, 809, 1024] + ] + + + + +**第 0020 题:** [登陆中国联通网上营业厅](http://iservice.10010.com/index_.html) 后选择「自助服务」 --> 「详单查询」,然后选择你要查询的时间段,点击「查询」按钮,查询结果页面的最下方,点击「导出」,就会生成类似于 2014年10月01日~2014年10月31日通话详单.xls 文件。写代码,对每月通话时间做个统计。 + +**第 0021 题:** 通常,登陆某个网站或者 APP,需要使用用户名和密码。密码是如何加密后存储起来的呢?请使用 Python 对密码加密。 + +- 阅读资料 [用户密码的存储与 Python 示例](http://zhuoqiang.me/password-storage-and-python-example.html) + +- 阅读资料 [Hashing Strings with Python](http://www.pythoncentral.io/hashing-strings-with-python/) + +- 阅读资料 [Python's safest method to store and retrieve passwords from a database](http://stackoverflow.com/questions/2572099/pythons-safest-method-to-store-and-retrieve-passwords-from-a-database) + +**第 0022 题:** iPhone 6、iPhone 6 Plus 早已上市开卖。请查看你写得 第 0005 题的代码是否可以复用。 + +**第 0023 题:** 使用 Python 的 Web 框架,做一个 Web 版本 留言簿 应用。 + +[阅读资料:Python 有哪些 Web 框架](http://v2ex.com/t/151643#reply53) + +- ![留言簿参考](http://i.imgur.com/VIyCZ0i.jpg) + + +**第 0024 题:** 使用 Python 的 Web 框架,做一个 Web 版本 TodoList 应用。 + +- ![SpringSide 版TodoList](http://i.imgur.com/NEf7zHp.jpg) + +**第 0025 题:** 使用 Python 实现:对着电脑吼一声,自动打开浏览器中的默认网站。 + + + 例如,对着笔记本电脑吼一声“百度”,浏览器自动打开百度首页。 + + 关键字:Speech to Text + +参考思路: +1:获取电脑录音-->WAV文件 + python record wav + +2:录音文件-->文本 + + STT: Speech to Text + + STT API Google API + +3:文本-->电脑命令