23.4 练习

    Web服务

    23-1. Web服务。使用yahoo!股票报价示例(stoclcpy)并把这个程序改为把报价数据保存到一个文件中,而不在屏幕上显示。可选题: 你可以修改脚本,让用户可以选择是显示报价还是保存到文件中。
    23-2.Web服务。修改yahoo!股票报价示例(stocLpy),让程序可以下载上面所列的其他参数数据。可选题:你可以把这个功能加到上一题的程序中。
    23-3.Web服务和CSV模块。修改stock.py,像我们在示例代码中那样,使用csv模块来解析得到的数据。附加题:用同样的方法修改这个脚本的Excel版本(estock.py)。
    23-4.REST与Web服务。学习现在的Web服务API和应用程序中,REST与XML是如何被使用的。与老式的Web服务,像Yahoo!报价服务这种用URL参数的方式相比较,额外提供了哪些功能。
    23-5.REST与Web服务。利用Python对REST和XML的支持,创建一个应用程序的框架,这个框架要能在写使用如今这些更新的Web服务和API应用程序的时候,能实现代码的共享和重用。展示你的使用Yahoo!、Google、eBay及(或)Amazon服务的代码。

    微软Office编程
    23-6.微软Excel和网页。创建一个应用程序,读取Excel电子表格中的数据,并生成一个对应的HTML表格(你可能需要第三方的HTMLgen模块)。
    23-7.微软Office应用程序与Web服务。连接到任何现有的Web服务,无论是基于REST还是URL的,并把数据写到Excel电子表格中,或设置一个比较好看的格式,然后放到Word文档中。格式要适于打印。附加题:要同时支持Excel和Word。
    23-8.微软Outlook和Web服务。与之前的问题相似,做同样的事情,并把数据放到一封新的电子邮件中,并用Outlook发送出去。附加题:做同样的事,但是用普通的SMTP服务器来发送电子邮件,而不使用Outlook(你可能想要参考第17章Internet客户端编程)。
    23-9.微软PowerPoint。设计一个演示文档生成器。设计一种用Word或普通文本编辑器就能生成的文本文件的格式。从遵循该格式的文本文件中,读出要演示的数据,并生成对应的PowerPoint幻灯片放在一个演示文档中。
    23-10.微软Outlook、数据库和你的地址簿。写一个程序,从Outlook的地址簿中读出数据,把想要的字段保存到数据库中。数据库可以是一个文本文件、DBM文件或是一个关系数据库(你可能想要参考第21章)。附加题:完成反向的工作。即从数据库(或允许用户直接输入)中读取联系人的信息,添加或更新记录到Outlook中。
    23-11.微软Outlook和电子邮件。开发一个程序读取收件箱和(或)其他重要的文件夹的数据,并把它们用普通的“box“格式保存到磁盘上。
    23-12.微软Outlook日历。写一个脚本创建新的Outlook任务。至少要允许用户输入以下信息:开始日期和时间、任务名字或主题及任务持续时间。
    23-13.微软Outlook日历。创建一个应用程序,导出你的所有任务信息到一个你指定的地方,如屏幕上、数据库中和Excel中等。附加题:程序也要可以导出Outlook任务。
    23-14.多线程。修改股票报价下载脚本(estocLpyw),使用多个Python线程,让数据下载部分可以“并行“。可选题:你也可以试用win32process.beginthreadex()产生VisualC++的线程来完成本题。
    23-15.Excel单元格格式。在股票报价下载脚本(estock.pyw)的电子表格版本中,我们在图23-7中看到股票价格并不是默认到小数点后两位,就算我们传进去的是有后缀0的也不行。当Excel把这个字符串转为数字的时候,就自动使用数字格式的设定。(a)把单元格的NumberFormat属性设为“0.00“就可以把数字的格式正确的设定为两个小数位。(b)我们也看到“change from previous close,那一列除了小数点后的小数之外,还丢了“+“号。可是,方法(a)中的修正方法只能解决小数点后的小数的问题。对所有的数字,那个“+“号都会被自动丢掉。解决方法是,把这一栏设为文本,而不是数字。你可以把单元格的NumberFormat属性设为“ @ “来解决这个问题。 (c)问题是,把单元格的格式由数字改为文本的一个问题是,我们丢失了数字的自动对齐方式。在(b)的解决方案之外,还要再设置单元格的HorizontalAlignment属性为Win32Excel的xlRight常量。当你完成了上面三部分后,你的输出结果看上去就更令人满意了,如图23-9所示。

    23.4 练习 - 图1

    图 23-9 改进Python-to-Excel股票报价脚本(estock.pyw)
    Java、Python、Jython
    23-16.Jython.Jython与CPython的区别是什么?
    23-17.Java和Python。选一个已经存在的Java应用程序,移植到Python中。在日记中写下你的经验。完成后,总结一下,都有哪些事是必需要做的,最重要的步骤是什么,移植的中一定要做的,公共的部分有哪些。
    23-18.Java和Python。研究Jython的源代码。描述一些Python标准类型是如何在Java中实现的。
    23-19.Java和Python。用Java写一个扩展来扩展Python。哪几步是必要的?在Jython交互解释器中演示你的结果。
    23-20.Jython和数据库。从第21章中找到一个比较有意思的练习,移植到Jython中。Jython最好的一件事就是,从2.1版本开始,它自带了一个JDBC数据库模块叫zxJDBC,而且它基本上遵循Python DB-API 2.0版本协议。
    23-21.Python和Jython。找到一个目前Jython中还没有的Python模块,并移植它。考虑把移植的结果作为一个补丁提交给Jython发布版。

    [1]注1: Mash-ups,有人译作“混搭”或“混搭式网站”,意为通过多源头信息整合完成的服务。是与维基(Wiki)、网志(Blog)并举的Web2. 0技术。目前最典型的代表是Google。
    [2]注2:本章中的Yahoo!服务均来自“雅虎”而不是“雅虎中国”为了不让读者混淆,以及能随本书进行相关实践,故而Yahoo没有翻译成“雅虎”各项服务名称也保留了原文。