<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>男单 618 &#187; python</title>
	<atom:link href="http://www.ai7.org/wp/html/category/python/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ai7.org/wp</link>
	<description>生活象筒装的卫生纸，开始的时候怎么扯都不觉得在转，后来转的越来越快。</description>
	<lastBuildDate>Wed, 14 Jul 2010 13:24:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>调用u.nu的api缩短网址</title>
		<link>http://www.ai7.org/wp/html/778.html</link>
		<comments>http://www.ai7.org/wp/html/778.html#comments</comments>
		<pubDate>Sun, 04 Jul 2010 12:13:20 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[u.nu]]></category>
		<category><![CDATA[缩短网址]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=778</guid>
		<description><![CDATA[Python语言: 调用u.nu的api缩短网址
 #!/usr/bin/python #coding: utf-8
 import sys import urllib2
 api_address = &#39;http://u.nu/unu-api-simple?url=&#39;
 for org_url in sys.argv[1:]: &#160;&#160;&#160; request = urllib2.urlopen(api_address + urllib2.quote(org_url)) &#160;&#160;&#160; short_url = request.read() &#160;&#160;&#160; if short_url.startswith(&#39;http&#39;): &#160;&#160;&#160;&#160;&#160;&#160;&#160; print org_url, &#39;&#8211;&#62; &#39;, short_url &#160;&#160;&#160; else: &#160;&#160;&#160;&#160;&#160;&#160;&#160; print &#39;Error&#39;
]]></description>
			<content:encoded><![CDATA[<div style="background:#fdfdfd;color:black;"><u>Python语言</u>: <a href="http://fayaa.com/code/view/11910/">调用u.nu的api缩短网址</a></div>
<div class="source" style="font-family: None; color: rgb(0, 0, 0); background-color: rgb(249, 247, 237); "> <span style="color: rgb(170, 170, 170); font-style: italic; ">#!/usr/bin/python</span><br /> <span style="color: rgb(170, 170, 170); font-style: italic; ">#coding: utf-8</span></p>
<p> <span style="color: rgb(0, 0, 0); ">import</span> <span style="color: rgb(0, 170, 170); text-decoration: underline; ">sys</span><br /> <span style="color: rgb(0, 0, 0); ">import</span> <span style="color: rgb(0, 170, 170); text-decoration: underline; ">urllib2</span></p>
<p> <span style="color: rgb(0, 0, 0); ">api_address</span> <span style="color: rgb(0, 0, 0); ">=</span> <span style="color: rgb(170, 85, 0); ">&#39;http://u.nu/unu-api-simple?url=&#39;</span></p>
<p> <span style="color: rgb(0, 0, 170); ">for</span> <span style="color: rgb(0, 0, 0); ">org_url</span> <span style="color: rgb(0, 0, 170); ">in</span> <span style="color: rgb(0, 0, 0); ">sys</span><span style="color: rgb(0, 0, 0); ">.</span><span style="color: rgb(0, 0, 0); ">argv</span><span style="color: rgb(0, 0, 0); ">[</span><span style="color: rgb(0, 153, 153); ">1</span><span style="color: rgb(0, 0, 0); ">:]:</span><br /> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0); ">request</span> <span style="color: rgb(0, 0, 0); ">=</span> <span style="color: rgb(0, 0, 0); ">urllib2</span><span style="color: rgb(0, 0, 0); ">.</span><span style="color: rgb(0, 0, 0); ">urlopen</span>(<span style="color: rgb(0, 0, 0); ">api_address</span> <span style="color: rgb(0, 0, 0); ">+</span> <span style="color: rgb(0, 0, 0); ">urllib2</span><span style="color: rgb(0, 0, 0); ">.</span><span style="color: rgb(0, 0, 0); ">quote</span>(<span style="color: rgb(0, 0, 0); ">org_url</span>))<br /> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0); ">short_url</span> <span style="color: rgb(0, 0, 0); ">=</span> <span style="color: rgb(0, 0, 0); ">request</span><span style="color: rgb(0, 0, 0); ">.</span><span style="color: rgb(0, 0, 0); ">read</span>()<br /> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 170); ">if</span> <span style="color: rgb(0, 0, 0); ">short_url</span><span style="color: rgb(0, 0, 0); ">.</span><span style="color: rgb(0, 0, 0); ">startswith</span>(<span style="color: rgb(170, 85, 0); ">&#39;http&#39;</span><span style="color: rgb(0, 0, 0); ">):</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 170); ">print</span> <span style="color: rgb(0, 0, 0); ">org_url</span><span style="color: rgb(0, 0, 0); ">,</span> <span style="color: rgb(170, 85, 0); ">&#39;&#8211;&gt; &#39;</span><span style="color: rgb(0, 0, 0); ">,</span> <span style="color: rgb(0, 0, 0); ">short_url</span><br /> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 170); ">else</span><span style="color: rgb(0, 0, 0); ">:</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 170); ">print</span> <span style="color: rgb(170, 85, 0); ">&#39;Error&#39;</span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/778.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用lxml解析html文件</title>
		<link>http://www.ai7.org/wp/html/773.html</link>
		<comments>http://www.ai7.org/wp/html/773.html#comments</comments>
		<pubDate>Sat, 26 Jun 2010 16:00:15 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/html/773.html</guid>
		<description><![CDATA[之前一直搞错了，实际上只需要使用lxml.html模块，读入html文件后，直接调用xpath定位所需要的内容就行了，不再需要etree什么的了。具体看下面的例子： 
Python语言: 使用lxml解析html文件
 
01 #coding: utf-802 03 from lxml import *04 import lxml.html as H05 import urllib206 07 def getart(url):08 &#160;&#160;&#160; f = urllib2.urlopen(url)09 &#160;&#160;&#160; content = f.read()10 &#160;&#160;&#160; 11 &#160;&#160;&#160; art = []12 &#160;&#160;&#160; doc = H.document_fromstring(content)13 &#160;&#160;&#160; p = doc.xpath(&#8216;/html/body/div[2]/div[2]/div/div/ul/li/div[2]/p&#8217;)14 &#160;&#160;&#160; for i in p:15 &#160;&#160;&#160;&#160;&#160;&#160;&#160; tmp = i.text_content()16 &#160;&#160;&#160;&#160;&#160;&#160;&#160; tmp = tmp.encode(&#8216;utf-8&#8242;)17 [...]]]></description>
			<content:encoded><![CDATA[<p>之前一直搞错了，实际上只需要使用lxml.html模块，读入html文件后，直接调用xpath定位所需要的内容就行了，不再需要etree什么的了。具体看下面的例子：<br /> 
<div style="background: none repeat scroll 0% 0% rgb(253, 253, 253); color: black;"><u>Python语言</u>: <a href="http://fayaa.com/code/view/11796/">使用lxml解析html文件</a></div>
<p> 
<div style="font-family: &quot;None&quot;,&quot;Courier New&quot;,&quot;monospace&quot;,&quot;Verdana&quot;;" class="source"><span class="lineno">01</span> <span class="_c">#coding: utf-8</span><span class="_"></span><br /><span class="lineno">02</span> <br /><span class="lineno">03</span> <span class="_kn">from</span><span class="_"> </span><span class="_nn">lxml</span><span class="_"> </span><span class="_kn">import</span><span class="_"> </span><span class="_o">*</span><span class="_"></span><br /><span class="lineno">04</span> <span class="_kn">import</span><span class="_"> </span><span class="_nn">lxml.html</span><span class="_"> </span><span class="_kn">as</span><span class="_"> </span><span class="_nn">H</span><span class="_"></span><br /><span class="lineno special">05</span> <span class="_kn">import</span><span class="_"> </span><span class="_nn">urllib2</span><span class="_"></span><br /><span class="lineno">06</span> <br /><span class="lineno">07</span> <span class="_k">def</span><span class="_"> </span><span class="_nf">getart</span><span class="_p">(</span><span class="_n">url</span><span class="_p">):</span><span class="_"></span><br /><span class="lineno">08</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_n">f</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_n">urllib2</span><span class="_o">.</span><span class="_n">urlopen</span><span class="_p">(</span><span class="_n">url</span><span class="_p">)</span><span class="_"></span><br /><span class="lineno">09</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_n">content</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_n">f</span><span class="_o">.</span><span class="_n">read</span><span class="_p">()</span><span class="_"></span><br /><span class="lineno special">10</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><br /><span class="lineno">11</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_n">art</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_p">[]</span><span class="_"></span><br /><span class="lineno">12</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_n">doc</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_n">H</span><span class="_o">.</span><span class="_n">document_fromstring</span><span class="_p">(</span><span class="_n">content</span><span class="_p">)</span><span class="_"></span><br /><span class="lineno">13</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_n">p</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_n">doc</span><span class="_o">.</span><span class="_n">xpath</span><span class="_p">(</span><span class="_s">&#8216;/html/body/div[2]/div[2]/div/div/ul/li/div[2]/p&#8217;</span><span class="_p">)</span><span class="_"></span><br /><span class="lineno">14</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_k">for</span><span class="_"> </span><span class="_n">i</span><span class="_"> </span><span class="_ow">in</span><span class="_"> </span><span class="_n">p</span><span class="_p">:</span><span class="_"></span><br /><span class="lineno special">15</span> <span class="_">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="_n">tmp</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_n">i</span><span class="_o">.</span><span class="_n">text_content</span><span class="_p">()</span><span class="_"></span><br /><span class="lineno">16</span> <span class="_">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="_n">tmp</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_n">tmp</span><span class="_o">.</span><span class="_n">encode</span><span class="_p">(</span><span class="_s">&#8216;utf-8&#8242;</span><span class="_p">)</span><span class="_"></span><br /><span class="lineno">17</span> <span class="_">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="_n">tmp</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_n">tmp</span><span class="_o">.</span><span class="_n">replace</span><span class="_p">(</span><span class="_s">&#8216;</span><span class="_se">\r</span><span class="_s">&#8216;</span><span class="_p">,</span><span class="_"> </span><span class="_s">&#8216;</span><span class="_se">\n</span><span class="_s">&#8216;</span><span class="_p">)</span><span class="_"></span><br /><span class="lineno">18</span> <span class="_">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="_n">art</span><span class="_o">.</span><span class="_n">append</span><span class="_p">(</span><span class="_n">tmp</span><span class="_p">)</span><span class="_"></span><br /><span class="lineno">19</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_k">return</span><span class="_"> </span><span class="_n">art</span><span class="_"></span><br /><span class="lineno special">20</span> <br /><span class="lineno">21</span> <span class="_k">if</span><span class="_"> </span><span class="_n">__name__</span><span class="_"> </span><span class="_o">==</span><span class="_"> </span><span class="_s">&#8216;__main__&#8217;</span><span class="_p">:</span><span class="_"></span><br /><span class="lineno">22</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_n">urls</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_p">[</span><span class="_s">'http://www.douban.com/group/topic/12018319/'</span><span class="_p">,</span><span class="_"></span><br /><span class="lineno">23</span> <span class="_">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="_s">'http://www.douban.com/group/topic/12018319/?start=100'</span><span class="_p">]</span><span class="_"></span><br /><span class="lineno">24</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_n">outfile</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_nb">open</span><span class="_p">(</span><span class="_s">&#8216;zheda.txt&#8217;</span><span class="_p">,</span><span class="_"> </span><span class="_s">&#8216;w&#8217;</span><span class="_p">)</span><span class="_"></span><br /><span class="lineno special">25</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_k">for</span><span class="_"> </span><span class="_n">url</span><span class="_"> </span><span class="_ow">in</span><span class="_"> </span><span class="_n">urls</span><span class="_p">:</span><span class="_"></span><br /><span class="lineno">26</span> <span class="_">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="_n">art</span><span class="_"> </span><span class="_o">=</span><span class="_"> </span><span class="_n">getart</span><span class="_p">(</span><span class="_n">url</span><span class="_p">)</span><span class="_"></span><br /><span class="lineno">27</span> <span class="_">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="_k">for</span><span class="_"> </span><span class="_n">item</span><span class="_"> </span><span class="_ow">in</span><span class="_"> </span><span class="_n">art</span><span class="_p">:</span><span class="_"></span><br /><span class="lineno">28</span> <span class="_">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="_n">outfile</span><span class="_o">.</span><span class="_n">write</span><span class="_p">(</span><span class="_n">item</span><span class="_o">+</span><span class="_s">&#8216;</span><span class="_se">\n</span><span class="_s">&#8216;</span><span class="_p">)</span><span class="_"></span><br /><span class="lineno">29</span> <span class="_">&nbsp;&nbsp;&nbsp; </span><span class="_n">outfile</span><span class="_o">.</span><span class="_n">close</span><span class="_p">()</span><span class="_"></span></div>
<p>附：浙大夜惊魂6月26日更新至101章<br />hotfile: <a href="http://hotfile.com/dl/50704792/39ca85e/626101.txt.html">http://hotfile.com/dl/50704792/39ca85e/626101.txt.html</a><br />xun6: <a href="http://www.xun6.com/file/8452e0f25/%E6%B5%99%E5%A4%A7%E5%A4%9C%E6%83%8A%E9%AD%82%EF%BC%886%E6%9C%8826%E6%97%A5%E6%9B%B4%E6%96%B0%E8%87%B3101%E7%AB%A0%EF%BC%89.txt.html"></a><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 文泉驿微米黑; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-style-span" style="font-family: Tahoma,Arial,Helvetica,sans-serif; font-size: 17px; line-height: 25px; text-align: left;"><span class="Apple-converted-space"> </span><a href="http://is.gd/d4Ym0" target="_blank" style="word-wrap: break-word; color: rgb(44, 98, 158); text-decoration: none;">http://is.gd/d4Ym0</a></span></span></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=d7e0929a-7936-84de-a0c2-1968317d78c0" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/773.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning Python &#8211; 01</title>
		<link>http://www.ai7.org/wp/html/770.html</link>
		<comments>http://www.ai7.org/wp/html/770.html#comments</comments>
		<pubDate>Fri, 25 Jun 2010 16:27:56 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/html/770.html</guid>
		<description><![CDATA[Python中处理变量的方式和其他语言有很大的不同，尽管这些区别看上去没有那么明显。
Python中所有东西都是对象，变量只是指向对象的指针。所以类型是跟着对象走的，而不是跟着变量走。比如下面的代码在Python中是完全正确的（尽管实际上很少有人这么写代码）：
a = 300
a = &#8217;spam&#8217;
a = 1.23
第一行，Python新建了一个整数对象，值为300，同时变量a指向这一对象。第二行，Python新建一个字符串对象&#8217;spam&#8217;，并且让变量a指向这一变量，并且，由于没有其他变量指向300这一对象，这一对象所占用的内容会被Python自动回收。第三行发生的事情是类似的。
好象也没什么，很多解释型的语言，似乎都是这样。下面再来看点不一样的东西。比较一下以下两段代码中的最后一行会返回什么：
代码1:
a = 300
b = 300
a is b
代码2:
a = 300
b = a
a is b
对于代码1，a is b返回False，也就是说，a和b指向了不同的对象，只是他们的值都300。对于代码2，a is b将返回True，a和b指向了同一个对象。如何说明他们确实是同一个对象呢？来看：
a = [1, 2, 3]
b = a
a.append(4)
这时，a等于[1,2,3,4]，b也等于[1,2,3,4]，因为他们指向的是同一个对象。再来看：
代码3：
a = 300
b = 300
a = a + 100
代码4：
a = 300
b = a
a = a + 100
问，执行完上面两段代码后，a、b各是多少？
毫无疑问，无论代码3还是4，执行后，a都应该是400，关键是b。对于代码3，由于已经知道a，b原来指向的就是不同的对象，因此，b应该还是300。对于代码4，或许有人认为b应该400，因为“a is b”是True，而且刚才也看到了list的例子。其实b还是等于300。
这里涉及到Python数据类型的另一个性质。Python中，整数对象是immutable的，也就是不可变的，一旦生成，其值是不可更改的。a = a + 100这一句的实际执行过程是，取出a当前指向对象的值300，加上100后为400，则新建一个值为400的整数对象，并令a指向该对象。也就是说，无论代码3还是代码4，a都不是原来的a了，只是在代码3中，这一点表现的并不明显。而在代码4中，由于b仍指向原来的300那个对象，因此，300不会被收回（每个对象有个计数器，自动记录有多少变量指向该对象，只有当计数器减为0时，Python才会自动回收该对象），b的值也不会改变。而刚才list的例子中，由于list是可变类型的，因此改变a，就是改变b。

Python越学越有趣了。


]]></description>
			<content:encoded><![CDATA[<p>Python中处理变量的方式和其他语言有很大的不同，尽管这些区别看上去没有那么明显。
<div>Python中所有东西都是对象，变量只是指向对象的指针。所以类型是跟着对象走的，而不是跟着变量走。比如下面的代码在Python中是完全正确的（尽管实际上很少有人这么写代码）：</div>
<div>a = 300</div>
<div>a = &#8217;spam&#8217;</div>
<div>a = 1.23</div>
<div>第一行，Python新建了一个整数对象，值为300，同时变量a指向这一对象。第二行，Python新建一个字符串对象&#8217;spam&#8217;，并且让变量a指向这一变量，并且，由于没有其他变量指向300这一对象，这一对象所占用的内容会被Python自动回收。第三行发生的事情是类似的。</div>
<div>好象也没什么，很多解释型的语言，似乎都是这样。下面再来看点不一样的东西。比较一下以下两段代码中的最后一行会返回什么：</div>
<div>代码1:</div>
<div>a = 300</div>
<div>b = 300</div>
<div>a is b</div>
<div>代码2:</div>
<div>a = 300</div>
<div>b = a</div>
<div>a is b</div>
<div>对于代码1，a is b返回False，也就是说，a和b指向了不同的对象，只是他们的值都300。对于代码2，a is b将返回True，a和b指向了同一个对象。如何说明他们确实是同一个对象呢？来看：</div>
<div>a = [1, 2, 3]</div>
<div>b = a</div>
<div>a.append(4)</div>
<div>这时，a等于[1,2,3,4]，b也等于[1,2,3,4]，因为他们指向的是同一个对象。再来看：</div>
<div>代码3：</div>
<div>a = 300</div>
<div>b = 300</div>
<div>a = a + 100</div>
<div>代码4：</div>
<div>a = 300</div>
<div>b = a</div>
<div>a = a + 100</div>
<div>问，执行完上面两段代码后，a、b各是多少？</div>
<div>毫无疑问，无论代码3还是4，执行后，a都应该是400，关键是b。对于代码3，由于已经知道a，b原来指向的就是不同的对象，因此，b应该还是300。对于代码4，或许有人认为b应该400，因为“a is b”是True，而且刚才也看到了list的例子。其实b还是等于300。</div>
<div>这里涉及到Python数据类型的另一个性质。Python中，整数对象是immutable的，也就是不可变的，一旦生成，其值是不可更改的。a = a + 100这一句的实际执行过程是，取出a当前指向对象的值300，加上100后为400，则新建一个值为400的整数对象，并令a指向该对象。也就是说，无论代码3还是代码4，a都不是原来的a了，只是在代码3中，这一点表现的并不明显。而在代码4中，由于b仍指向原来的300那个对象，因此，300不会被收回（每个对象有个计数器，自动记录有多少变量指向该对象，只有当计数器减为0时，Python才会自动回收该对象），b的值也不会改变。而刚才list的例子中，由于list是可变类型的，因此改变a，就是改变b。</div>
<div></div>
<div>Python越学越有趣了。</div>
<div></div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/770.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spyder: Python的科学计算IDE</title>
		<link>http://www.ai7.org/wp/html/768.html</link>
		<comments>http://www.ai7.org/wp/html/768.html#comments</comments>
		<pubDate>Thu, 24 Jun 2010 13:59:55 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/html/768.html</guid>
		<description><![CDATA[Spyder（之前叫Pydee）是一个面向Python科学计算的IDE。跨平台，轻量级，提供了类似Matlab集成环境的功能。对于Windows平台的用户，可以考虑直接安装Python(x,y)这个发行版，集成了众多常用的与科学计算有关的Python包。

]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/spyderlib/">Spyder</a>（之前叫Pydee）是一个面向Python科学计算的IDE。跨平台，轻量级，提供了类似Matlab集成环境的功能。对于Windows平台的用户，可以考虑直接安装<a href="http://www.pythonxy.com/">Python(x,y)</a>这个发行版，集成了众多常用的与科学计算有关的Python包。
<div><img src="http://packages.python.org/spyder/_images/spyder.png" border="0"/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/768.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>基于Python的针对科学家和工程师的软件工程</title>
		<link>http://www.ai7.org/wp/html/750.html</link>
		<comments>http://www.ai7.org/wp/html/750.html#comments</comments>
		<pubDate>Sun, 23 May 2010 09:08:12 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/html/750.html</guid>
		<description><![CDATA[Software Engineering with Python for Scientist and Engineers是PSF2005年资助的一项计划，项目主页在Software Carpentry，作者是Greg Wilson。该项目由一系列的讲座组成，帮助科技工作者使用Python快捷的任务。目前作者正在完善第4版。更详细的信息查阅项目主页和作者的Blog。
Lectures

Introduction
Python Basics
Python Strings, Lists, and Files
Python Functions and Modules
Debugging
Version Control
Python Sets and Dictionaries
Image Processing
Basic Unix Shell
More Unix Shell
Automated Builds
Computational Complexity
Python Basic Object-Oriented Programming
Python Advanced Object-Oriented Programming
Quality Assurance
Unit Testing
Databases
Regular Expressions
Binary Data
XML
GUI Programming
Web Client Programming
How Web Servers Work
Web Application Programming
Empirical Software Engineering
Software Development Lifecycles
Summary
License
Glossary
Acknowledgments
Bibliography


]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.python.org/files/psf/grants/swc.pdf">Software Engineering with Python for Scientist and Engineers</a>是<a href="http://www.python.org/psf/">PSF</a>2005年资助的一项计划，项目主页在<a href="http://software-carpentry.org/">Software Carpentry</a>，作者是<a href="http://software-carpentry.org/blog/">Greg Wilson</a>。该项目由一系列的讲座组成，帮助科技工作者使用Python快捷的任务。目前作者正在完善第4版。更详细的信息查阅<a href="http://software-carpentry.org/">项目主页</a>和<a href="http://www.software-carpentry.org/blog/">作者的Blog</a>。<br />
<h2>Lectures</h2>
<ol>
<li><a href="http://software-carpentry.org/intro.html" target="lec:intro">Introduction</a></li>
<li><a href="http://software-carpentry.org/py01.html" target="lec:py01">Python Basics</a></li>
<li><a href="http://software-carpentry.org/py02.html" target="lec:py02">Python Strings, Lists, and Files</a></li>
<li><a href="http://software-carpentry.org/py03.html" target="lec:py03">Python Functions and Modules</a></li>
<li><a href="http://software-carpentry.org/debugging.html" target="lec:debugging">Debugging</a></li>
<li><a href="http://software-carpentry.org/version.html" target="lec:version">Version Control</a></li>
<li><a href="http://software-carpentry.org/py04.html" target="lec:py04">Python Sets and Dictionaries</a></li>
<li><a href="http://software-carpentry.org/imgproc.html" target="lec:imgproc">Image Processing</a></li>
<li><a href="http://software-carpentry.org/shell01.html" target="lec:shell01">Basic Unix Shell</a></li>
<li><a href="http://software-carpentry.org/shell02.html" target="lec:shell02">More Unix Shell</a></li>
<li><a href="http://software-carpentry.org/build.html" target="lec:build">Automated Builds</a></li>
<li><a href="http://software-carpentry.org/bigoh.html" target="lec:bigoh">Computational Complexity</a></li>
<li><a href="http://software-carpentry.org/oop01.html" target="lec:oop01">Python Basic Object-Oriented Programming</a></li>
<li><a href="http://software-carpentry.org/oop02.html" target="lec:oop02">Python Advanced Object-Oriented Programming</a></li>
<li><a href="http://software-carpentry.org/qa.html" target="lec:qa">Quality Assurance</a></li>
<li><a href="http://software-carpentry.org/unit.html" target="lec:unit">Unit Testing</a></li>
<li><a href="http://software-carpentry.org/db.html" target="lec:db">Databases</a></li>
<li><a href="http://software-carpentry.org/re.html" target="lec:re">Regular Expressions</a></li>
<li><a href="http://software-carpentry.org/binary.html" target="lec:binary">Binary Data</a></li>
<li><a href="http://software-carpentry.org/xml.html" target="lec:xml">XML</a></li>
<li><a href="http://software-carpentry.org/gui.html" target="lec:gui">GUI Programming</a></li>
<li><a href="http://software-carpentry.org/client.html" target="lec:client">Web Client Programming</a></li>
<li><a href="http://software-carpentry.org/nitinat.html" target="lec:nitinat">How Web Servers Work</a></li>
<li><a href="http://software-carpentry.org/server.html" target="lec:server">Web Application Programming</a></li>
<li><a href="http://software-carpentry.org/empirical.html" target="lec:empirical">Empirical Software Engineering</a></li>
<li><a href="http://software-carpentry.org/lifecycle.html" target="lec:lifecycle">Software Development Lifecycles</a></li>
<li><a href="http://software-carpentry.org/summary.html" target="lec:summary">Summary</a></li>
<li><a href="http://software-carpentry.org/license.html" target="lec:license">License</a></li>
<li><a href="http://software-carpentry.org/glossary.html" target="lec:glossary">Glossary</a></li>
<li><a href="http://software-carpentry.org/ack.html" target="lec:ack">Acknowledgments</a></li>
<li><a href="http://software-carpentry.org/bib.html" target="lec:bib">Bibliography</a></li>
</ol>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=89fc99a8-e430-86e2-b733-02758c77b7f1" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/750.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sage Tutorial中文版</title>
		<link>http://www.ai7.org/wp/html/682.html</link>
		<comments>http://www.ai7.org/wp/html/682.html#comments</comments>
		<pubDate>Sat, 09 Jan 2010 02:43:34 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sage]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=682</guid>
		<description><![CDATA[Sage Tutorial是一份快速了解Sage的入门文档，花了两周多的时间将其翻译为中文。但是“Some more advanced mathematics”一节没有翻译，因为完全不熟悉这一节所涉及到的内容。
第一次翻译开源软件的技术文档，水平有限，希望各位多提意见，任何方面的都可以。如果没有大的问题，大概一周后会向Sage开发组提交。
源文件使用Sphinx管理，PDF文件是由自动转换而来的LaTeX文件编译的，因此其中很多格式不符合中文的习惯。所以请大家先以HTML文件为准，最后发布前，我会手工调整LaTeX文件后再编译。
Email: amao@ai7.org
相关内容：翻译Sage文档的准备工作
Sage Tutorial 中文版rst源文件
Sage Tutorial 中文版（HTML）
Sage Tutorial 中文版（PDF）
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sagemath.org/doc/tutorial/index.html" target="_blank">Sage Tutorial</a>是一份快速了解<a href="http://www.sagemath.org" target="_blank">Sage</a>的入门文档，花了两周多的时间将其翻译为中文。但是“<a href="http://www.sagemath.org/doc/tutorial/tour_advanced.html" target="_blank">Some more advanced mathematics</a>”一节没有翻译，因为完全不熟悉这一节所涉及到的内容。</p>
<p>第一次翻译开源软件的技术文档，水平有限，希望各位多提意见，任何方面的都可以。如果没有大的问题，大概一周后会向Sage开发组提交。</p>
<p>源文件使用Sphinx管理，PDF文件是由自动转换而来的LaTeX文件编译的，因此其中很多格式不符合中文的习惯。所以请大家先以HTML文件为准，最后发布前，我会手工调整LaTeX文件后再编译。</p>
<p>Email: amao@ai7.org</p>
<p>相关内容：<a href="../html/658.html">翻译Sage文档的准备工作</a></p>
<p><a href="http://www.ai7.org/wp/wp-content/uploads/2010/01/rst.zip">Sage Tutorial 中文版rst源文件</a></p>
<p><a href="http://www.ai7.org/wp/wp-content/uploads/2010/01/html.zip">Sage Tutorial 中文版（HTML）</a></p>
<p><a href="http://www.ai7.org/wp/wp-content/uploads/2010/01/pdf.zip">Sage Tutorial 中文版（PDF）</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/682.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ubuntu 9.10下unzip的乱码问题</title>
		<link>http://www.ai7.org/wp/html/678.html</link>
		<comments>http://www.ai7.org/wp/html/678.html#comments</comments>
		<pubDate>Fri, 01 Jan 2010 09:56:45 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[zip]]></category>
		<category><![CDATA[乱码]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=678</guid>
		<description><![CDATA[Ubuntu 9.10中unzip升级为6.0，结果原来的-O参数没有了，解压缩Win平台来的带中文文件名的文件时，会有乱码。Google，Baidu无果后，自行使用Python解决。
01 #!/usr/bin/python
02 #coding=utf8
03
04 import zipfile
05 import sys
06
07 if len(sys.argv)&#60;2:
08     print u&#8217;punzip zipfilename&#8217;
09 else:
10     f=zipfile.ZipFile(sys.argv[1])
11     nlist=f.namelist()
12     for n in nlist:
13         m=unicode(n,&#8217;gb2312&#8242;).encode(&#8216;utf8&#8242;)
14         file(m,&#8217;wb&#8217;).write(f.read(n))
15     f.close()
只有基本功能，解压缩到当前目录下，不能新建目录……
请自行修改。

]]></description>
			<content:encoded><![CDATA[<p>Ubuntu 9.10中unzip升级为6.0，结果原来的-O参数没有了，解压缩Win平台来的带中文文件名的文件时，会有乱码。Google，Baidu无果后，自行使用Python解决。</p>
<p>01 #!/usr/bin/python<br />
02 #coding=utf8<br />
03<br />
04 import zipfile<br />
05 import sys<br />
06<br />
07 if len(sys.argv)&lt;2:<br />
08     print u&#8217;punzip zipfilename&#8217;<br />
09 else:<br />
10     f=zipfile.ZipFile(sys.argv[1])<br />
11     nlist=f.namelist()<br />
12     for n in nlist:<br />
13         m=unicode(n,&#8217;gb2312&#8242;).encode(&#8216;utf8&#8242;)<br />
14         file(m,&#8217;wb&#8217;).write(f.read(n))<br />
15     f.close()</p>
<div class="source" style="font-family: &amp;amp;amp;"><span class="_p">只有基本功能，解压缩到当前目录下，不能新建目录……</span></div>
<div class="source" style="font-family: &amp;amp;amp;"><span class="_p">请自行修改。<br />
</span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/678.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>翻译Sage文档的准备工作</title>
		<link>http://www.ai7.org/wp/html/658.html</link>
		<comments>http://www.ai7.org/wp/html/658.html#comments</comments>
		<pubDate>Wed, 23 Dec 2009 09:10:59 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[sage]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=658</guid>
		<description><![CDATA[打算翻译一下Sage的文档。Sage的文档完全是用reStructuredTEXT写成的，由Sphinx管理，对应的翻译就行了，但是为了与原文档保持相同的风格，还是折腾了好久。这里记录一下。
环境是：Ubuntu+Sage 4.2.1+CTeXLive 2008。以翻译Sage Tutorial为例，需要做以下准备工作。（下面用$SAGE代替sage的主目录）


转到$SAGE/devel/sage-main/doc/目录；
在common目录中的builder.py文件中，找到
LANGUAGES = ['en', 'fr']
修改为：
LANGUAGES = ['en', 'fr', 'zh']

新建zh子目录，并将en子目录下的tutorial目录复制到刚才新建的zh目录中 （如果是翻译其他文档，复制相应的目录）；
修改zh目录下的conf.py文件：


在
import sys, os
这一行后 添加 两行：
reload(sys)
sys.setdefaultencoding('utf8')

在conf.py文件最后添加：
latex_preamble='\usepackage{ctex}'
latex_premble+='\usepackage{ctex}\n\punctstyle{CCT}'




修改$SAGE/local/lib/python2.6/site-packages/Sphinx-0.6.3-py2.6.egg/sphinx/texinputs/Makefile文件，将其中的“pdflatex”全部替换为“xelatex”（共有5处）；
将$SAGE/local/lib/python2.6/site-packages/Sphinx-0.6.3-py2.6.egg/sphinx/writers/latex.py中的“\\usepackage[utf8]{inputenc}”中的“utf8”修改为“latin1”，即“\\usepackage[latin1]{inputenc}”。

如果上述操作正常的话，就可以开始翻译了。将zh/tutorial下的所有.rst 文件翻译为中文后，即可进行编译。编译的方法如下:

转到$SAGE目录；
查看所有文档列表：
./sage -docbuild -D
此时应该可以看到“zh/tutorial”选项；
编译：
./sage -docbuild zh/tutorial html

./sage -docbuild zh/tutorial pdf
编译结果会在编译信息最后一行提示。


2010年6月21日更新：
以上是基于Sage 4.3所做的修改，今天下载了4.4.3，情况有些变化：

以上的第4、6步完全不需要了，因为相关的配置转移到其他文件中去了
修改$SAGE/devel/sage-main/doc/common/conf.py文件中两个地方：


latex_elements['inputenc'] = &#8216;\\usepackage[utf8x]{inputenc}&#8217;
改为
latex_elements['inputenc'] = &#8216;\\usepackage[latin1]{inputenc}&#8217;

latex_elements['preamble']那一行下面再添加一行：
latex_elements['preamble'] += &#8216;\usepackage{ctex}\n\punctstyle{CCT}\n&#8217;




]]></description>
			<content:encoded><![CDATA[<p>打算翻译一下<a href="http://www.sagemath.org" target="_blank">Sage</a>的文档。Sage的文档完全是用reStructuredTEXT写成的，由Sphinx管理，对应的翻译就行了，但是为了与原文档保持相同的风格，还是折腾了好久。这里记录一下。</p>
<p>环境是：Ubuntu+Sage 4.2.1+CTeXLive 2008。以翻译Sage Tutorial为例，需要做以下准备工作。（下面用$SAGE代替sage的主目录）</p>
<div>
<ol>
<li>转到$SAGE/devel/sage-main/doc/目录；</li>
<li>在common目录中的builder.py文件中，找到
<pre>LANGUAGES = ['en', 'fr']</pre>
<p>修改为：</p>
<pre>LANGUAGES = ['en', 'fr', 'zh']</pre>
</li>
<li>新建zh子目录，并将en子目录下的tutorial目录复制到刚才新建的zh目录中 （如果是翻译其他文档，复制相应的目录）；</li>
<li>修改zh目录下的conf.py文件：<br />
<blockquote>
<ul>
<li>在
<pre>import sys, os</pre>
<p>这一行后 <strong>添加</strong> 两行：</p>
<pre>reload(sys)
sys.setdefaultencoding('utf8')</pre>
</li>
<li>在conf.py文件最后添加：
<pre><span style="text-decoration: line-through;">latex_preamble='\usepackage{ctex}'</span></pre>
<pre>latex_premble+='\usepackage{ctex}\n\punctstyle{CCT}'</pre>
</li>
</ul>
</blockquote>
</li>
<li>修改$SAGE/local/lib/python2.6/site-packages/Sphinx-0.6.3-py2.6.egg/sphinx/texinputs/Makefile文件，将其中的“pdflatex”全部替换为“xelatex”（共有5处）；</li>
<li>将$SAGE/local/lib/python2.6/site-packages/Sphinx-0.6.3-py2.6.egg/sphinx/writers/latex.py中的“\\usepackage[utf8]{inputenc}”中的“utf8”修改为“latin1”，即“\\usepackage[latin1]{inputenc}”。</li>
</ol>
<p>如果上述操作正常的话，就可以开始翻译了。将zh/tutorial下的所有.rst 文件翻译为中文后，即可进行编译。编译的方法如下:</p>
<ol>
<li>转到$SAGE目录；</li>
<li>查看所有文档列表：
<pre>./sage -docbuild -D</pre>
<p>此时应该可以看到“zh/tutorial”选项；</li>
<li>编译：
<pre>./sage -docbuild zh/tutorial html

./sage -docbuild zh/tutorial pdf</pre>
<p>编译结果会在编译信息最后一行提示。</li>
</ol>
</div>
<p><font color='red'>2010年6月21日更新：</font><br />
以上是基于Sage 4.3所做的修改，今天下载了4.4.3，情况有些变化：</p>
<ul>
<li>以上的第4、6步完全不需要了，因为相关的配置转移到其他文件中去了</li>
<li>修改$SAGE/devel/sage-main/doc/common/conf.py文件中两个地方：
<ol>
<li>
latex_elements['inputenc'] = &#8216;\\usepackage[utf8x]{inputenc}&#8217;<br />
改为<br />
latex_elements['inputenc'] = &#8216;\\usepackage[latin1]{inputenc}&#8217;
</li>
<li>latex_elements['preamble']那一行下面再<font color='red'>添加</font>一行：<br />
latex_elements['preamble'] += &#8216;\usepackage{ctex}\n\punctstyle{CCT}\n&#8217;
</li>
</ol>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/658.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zoundry Raven开源了</title>
		<link>http://www.ai7.org/wp/html/475.html</link>
		<comments>http://www.ai7.org/wp/html/475.html#comments</comments>
		<pubDate>Mon, 10 Aug 2009 09:14:41 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[免费软件推荐]]></category>
		<category><![CDATA[Zoundry]]></category>
		<category><![CDATA[Zoundry Raven]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=475</guid>
		<description><![CDATA[Zoundry Raven以及原来的Zoundry是我在Windows平台下最喜欢的Blog客户端程序。但是因为只有Windows平台的版本，所以后来还是ScribeFire用的多。刚刚知道Zoundry Raven开源了（消息来源：python编写的博客编写客户端Zoundry Raven开源）。过去看了一下，两个没想到，没想到今年1月份就已经开源了，我还以为是最近的事情；另一个没想到是，开源了大半年，居然还没有人移植到其他平台上。
]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://www.zoundryraven.com/">Zoundry Raven</a>以及原来的<a target="_blank" href="http://www.zoundry.com/">Zoundry</a>是我在Windows平台下最喜欢的Blog客户端程序。但是因为只有Windows平台的版本，所以后来还是<a target="_blank" href="http://www.scribefire.com/">ScribeFire</a>用的多。刚刚知道Zoundry Raven开源了（消息来源：<a href="https://groups.google.com/group/python-cn/browse_thread/thread/154f18ec870dc73c">python编写的博客编写客户端Zoundry Raven开源</a>）。<a target="_blank" href="http://code.google.com/p/zoundryraven/">过去</a>看了一下，两个没想到，没想到今年1月份就已经开源了，我还以为是最近的事情；另一个没想到是，开源了大半年，居然还没有人移植到其他平台上。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/475.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimPy</title>
		<link>http://www.ai7.org/wp/html/422.html</link>
		<comments>http://www.ai7.org/wp/html/422.html#comments</comments>
		<pubDate>Mon, 01 Dec 2008 15:25:15 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=422</guid>
		<description><![CDATA[想用Python写一个仿真程序，网上的中文资料很少，比较完整的是IBM的这篇技术文章：
英文原版：Charming Python: SimPy simplifies complex models中文版：可爱的 Python: SimPy 简化了复杂模型
本来是不错的文章，但是由于写的比较早（2002年12月26日），很多语句的用法在新版中发生了很大的变化。搞了一个晚上，程序勉强调通，但是那个记录最大最小时间的问题一直解决不了。实在搞不下去了，就到SimPy自带的doc中扒扒，没想到这个例子已经被收入正式的发行包中。具体位置在：/usr/share/doc/python-simpy-doc/SimPyModels/Market.py，如果是windows用户，请自己查找Market.py文件，应该是有的。
教训啊教训。
附Market.py原文：

 from SimPy.Simulation import * import random from math import sqrt  AISLES = 6&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # Number of open aisles ITEMTIME = 0.1&#160;&#160;&#160;&#160; # Time to ring up one item AVGITEMS = 20&#160;&#160;&#160;&#160;&#160; # Average number of items purchased CLOSING = 60*12&#160;&#160;&#160; # Minutes from store open [...]]]></description>
			<content:encoded><![CDATA[<p>想用Python写一个仿真程序，网上的中文资料很少，比较完整的是IBM的这篇技术文章：</p>
<p>英文原版：<a href="http://www.ibm.com/developerworks/library/l-simpy.html?S_TACT=105AGX52&amp;S_CMP=cn-a-l">Charming Python: SimPy simplifies complex models</a><br />中文版：<a href="https://www.ibm.com/developerworks/cn/linux/l-simpy/">可爱的 Python: SimPy 简化了复杂模型</a></p>
<p>本来是不错的文章，但是由于写的比较早（2002年12月26日），很多语句的用法在新版中发生了很大的变化。搞了一个晚上，程序勉强调通，但是那个记录最大最小时间的问题一直解决不了。实在搞不下去了，就到SimPy自带的doc中扒扒，没想到这个例子已经被收入正式的发行包中。具体位置在：/usr/share/doc/python-simpy-doc/SimPyModels/Market.py，如果是windows用户，请自己查找Market.py文件，应该是有的。</p>
<p>教训啊教训。</p>
<p>附Market.py原文：</p>
<div style="background-color: rgb(249, 247, 237);" id="codee_html">
<div style="font-family: &quot;[object HTMLOptionElement]&quot;,&quot;Courier New&quot;,&quot;Bitstream Vera Sans Mono&quot;,&quot;monospace&quot;; background-color: rgb(249, 247, 237);" class="source"><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> from SimPy.Simulation import *<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> import random<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> from math import sqrt<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <br /><span class="lineno special"></span> AISLES = <span style="color: rgb(0, 0, 255);">6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Number of open aisles</span><br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> ITEMTIME = <span style="color: rgb(0, 0, 255);">0.1</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Time to ring up one item</span><br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> AVGITEMS = <span style="color: rgb(0, 0, 255);">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Average number of items purchased</span><br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> CLOSING = <span style="color: rgb(0, 0, 255);">60</span>*<span style="color: rgb(0, 0, 255);">12</span>&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Minutes from store open to store close</span><br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> AVGCUST = <span style="color: rgb(0, 0, 255);">1500</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Average number of daily customers</span><br /><span class="lineno special"></span> RUNS = <span style="color: rgb(0, 0, 255);">8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Number of times to run the simulation</span><br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> SEED = <span style="color: rgb(0, 0, 255);">111333555</span>&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># seed value for random numbers</span><br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <span style="color: rgb(0, 0, 128); font-weight: bold;">class</span> Customer(Process):<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">def</span> __init__(self):<br /><span class="lineno special"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Process.__init__(self)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Randomly pick how many items this customer is buying</span><br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.items = <span style="color: rgb(0, 0, 255);">1</span> + int(random.expovariate(<span style="color: rgb(0, 0, 255);">1.0</span>/AVGITEMS))<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">def</span> checkout(self):<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start = now()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Customer decides to check out</span><br /><span class="lineno special"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">yield</span> request, self, checkout_aisle<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at_checkout = now()&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Customer gets to front of line</span><br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; waittime.tally(at_checkout-start)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">yield</span> hold, self, self.items*ITEMTIME<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leaving = now()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 136, 0); font-style: italic;"># Customer completes purchase</span><br /><span class="lineno special"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; checkouttime.tally(leaving-at_checkout)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">yield</span> release, self, checkout_aisle<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <span style="color: rgb(0, 0, 128); font-weight: bold;">class</span> Customer_Factory(Process):<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">def</span> run(self):<br /><span class="lineno special"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">while</span> <span style="color: rgb(0, 0, 255);">1</span>:<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c = Customer()<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; activate(c, c.checkout())<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arrival = random.expovariate(float(AVGCUST)/CLOSING)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">yield</span> hold, self, arrival<br /><span class="lineno special"></span> <br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <span style="color: rgb(0, 0, 128); font-weight: bold;">class</span> Monitor2(Monitor):<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">def</span> __init__(self):<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Monitor.__init__(self)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.min, self.max = (int(<span style="color: rgb(0, 0, 255);">2</span>**<span style="color: rgb(0, 0, 255);">31</span>-<span style="color: rgb(0, 0, 255);">1</span>),<span style="color: rgb(0, 0, 255);">0</span>)<br /><span class="lineno special"></span> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">def</span> tally(self, x):<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.observe(x)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.min = min(self.min, x)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.max = max(self.max, x)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <br /><span class="lineno special"></span> random.seed(SEED)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <span style="color: rgb(0, 0, 128); font-weight: bold;">print</span> <span style="color: rgb(0, 0, 255);">&#8216;Market&#8217;</span><br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <span style="color: rgb(0, 0, 128); font-weight: bold;">for</span> run <span style="font-weight: bold;">in</span> range(RUNS):<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; waittime = Monitor2()<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; checkouttime = Monitor2()<br /><span class="lineno special"></span> &nbsp;&nbsp;&nbsp; checkout_aisle = Resource(AISLES)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; initialize()<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; cf = Customer_Factory()<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; activate(cf, cf.run(), <span style="color: rgb(0, 0, 255);">0.0</span>)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; simulate(until=CLOSING)<br /><span class="lineno special"></span> <br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">print</span> <span style="color: rgb(0, 0, 255);">&#8220;Waiting time average: </span><span style="color: rgb(0, 0, 255);">%.1f</span><span style="color: rgb(0, 0, 255);">&#8220;</span> % waittime.mean(), \<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 255);">&#8220;(std dev </span><span style="color: rgb(0, 0, 255);">%.1f</span><span style="color: rgb(0, 0, 255);">, maximum </span><span style="color: rgb(0, 0, 255);">%.1f</span><span style="color: rgb(0, 0, 255);">)&#8221;</span> % (sqrt(waittime.var()),waittime.max)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <span style="color: rgb(0, 0, 128); font-weight: bold;">print</span> <span style="color: rgb(0, 0, 255);">&#8216;AISLES:&#8217;</span>, AISLES, <span style="color: rgb(0, 0, 255);">&#8216;&nbsp; ITEM TIME:&#8217;</span>, ITEMTIME</div>
</p></div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/422.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Euler第6题</title>
		<link>http://www.ai7.org/wp/html/410.html</link>
		<comments>http://www.ai7.org/wp/html/410.html#comments</comments>
		<pubDate>Mon, 13 Oct 2008 12:13:14 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=410</guid>
		<description><![CDATA[Python语言: Project Euler-6
 
 a=range(101) print sum([x*y for x in a for y in a if x!=y])
]]></description>
			<content:encoded><![CDATA[<div style="background: rgb(253, 253, 253) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><u>Python语言</u>: <a href="http://www.fayaa.com/code/view/431/">Project Euler-6</a></div>
<p> 
<div style="font-family: &quot;[object HTMLOptionElement]&quot;,&quot;Lucida Console&quot;,&quot;Courier New&quot;,&quot;monospace&quot;; background-color: rgb(249, 247, 237);" class="source"><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> a=range(<span style="color: rgb(0, 0, 255);">101</span>)<br /><span style="color: rgb(0, 136, 0); font-style: italic;" class="lineno"></span> <span style="color: rgb(0, 0, 128); font-weight: bold;">print</span> sum([x*y <span style="color: rgb(0, 0, 128); font-weight: bold;">for</span> x <span style="font-weight: bold;">in</span> a <span style="color: rgb(0, 0, 128); font-weight: bold;">for</span> y <span style="font-weight: bold;">in</span> a <span style="color: rgb(0, 0, 128); font-weight: bold;">if</span> x!=y])</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/410.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>筛法求素数表</title>
		<link>http://www.ai7.org/wp/html/408.html</link>
		<comments>http://www.ai7.org/wp/html/408.html#comments</comments>
		<pubDate>Fri, 03 Oct 2008 14:22:56 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=408</guid>
		<description><![CDATA[第一个版本：
P=range(2,20001)i=0l=len(P)t1=datetime.datetime.now()while i&#160;&#160;&#160; for item in P[(i+1):]:&#160;&#160;&#160;&#160;&#160;&#160;&#160; if item % P[i]==0:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; P.remove(item)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; l-=1&#160;&#160;&#160; i+=1t2=datetime.datetime.now()print t2-t1print P
第二个版本：
P=range(2,20001)i=0l=len(P)t1=datetime.datetime.now()while i&#160;&#160;&#160; temp=[item for item in P[(i+1):] if item % P[i] != 0]&#160;&#160;&#160; P=P[:(i+1)]+temp&#160;&#160;&#160; l=len(P)&#160;&#160;&#160; i+=1t2=datetime.datetime.now()print t2-t1print P
第三个版本：
temp=range(2,20001)P=[]t1=datetime.datetime.now()while temp!=[]:&#160;&#160;&#160; P.append(temp[0])&#160;&#160;&#160; temp=[item for item in temp if item % P[-1] != 0]t2=datetime.datetime.now()print t2-t1print P
第一个版本需要7秒多，第二个版本只需要2秒多，第三个版本就只需要1.8秒左右了。
注1：刚开始学Python，正在慢慢体会Python的精神，希望能尽快写出Python风格的程序，而不是用Python语言写Pascal程序。注2：正是因为刚开始学，所以实际上不止三个版本，但是从7秒多优化到2秒以内，还是很有成就感的。注3：还是太慢了。
]]></description>
			<content:encoded><![CDATA[<p>第一个版本：</p>
<p>P=range(2,20001)<br />i=0<br />l=len(P)<br />t1=datetime.datetime.now()<br />while i<l :><br />&nbsp;&nbsp;&nbsp; for item in P[(i+1):]:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if item % P[i]==0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P.remove(item)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l-=1<br />&nbsp;&nbsp;&nbsp; i+=1<br />t2=datetime.datetime.now()<br />print t2-t1<br />print P</p>
<p>第二个版本：</p>
<p>P=range(2,20001)<br />i=0<br />l=len(P)<br />t1=datetime.datetime.now()<br />while i</l><l :><br />&nbsp;&nbsp;&nbsp; temp=[item for item in P[(i+1):] if item % P[i] != 0]<br />&nbsp;&nbsp;&nbsp; P=P[:(i+1)]+temp<br />&nbsp;&nbsp;&nbsp; l=len(P)<br />&nbsp;&nbsp;&nbsp; i+=1<br />t2=datetime.datetime.now()<br />print t2-t1<br />print P</p>
<p>第三个版本：</p>
<p>temp=range(2,20001)<br />P=[]<br />t1=datetime.datetime.now()<br />while temp!=[]:<br />&nbsp;&nbsp;&nbsp; P.append(temp[0])<br />&nbsp;&nbsp;&nbsp; temp=[item for item in temp if item % P[-1] != 0]<br />t2=datetime.datetime.now()<br />print t2-t1<br />print P</p>
<p>第一个版本需要7秒多，第二个版本只需要2秒多，第三个版本就只需要1.8秒左右了。</p>
<p>注1：刚开始学Python，正在慢慢体会Python的精神，希望能尽快写出Python风格的程序，而不是用Python语言写Pascal程序。<br />注2：正是因为刚开始学，所以实际上不止三个版本，但是从7秒多优化到2秒以内，还是很有成就感的。<br />注3：还是太慢了。<br /></l></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/408.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ibus输入法</title>
		<link>http://www.ai7.org/wp/html/407.html</link>
		<comments>http://www.ai7.org/wp/html/407.html#comments</comments>
		<pubDate>Sun, 28 Sep 2008 16:22:01 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=407</guid>
		<description><![CDATA[Ubuntu下的输入法换成了ibus，尝试一下。上屏的方式和FCITX不太一样，有点类似拼音输入法的方式，和一般形码的上屏方式都不一样，要多按很多空格，感觉有点不习惯。另外就是安装文件非常大。用一段再说吧。不行就再换回去。
]]></description>
			<content:encoded><![CDATA[<p>Ubuntu下的输入法换成了<a href="http://code.google.com/p/ibus/">ibus</a>，尝试一下。上屏的方式和FCITX不太一样，有点类似拼音输入法的方式，和一般形码的上屏方式都不一样，要多按很多空格，感觉有点不习惯。<br />另外就是安装文件非常大。<br />用一段再说吧。不行就再换回去。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/407.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>python没有规划相关的库？</title>
		<link>http://www.ai7.org/wp/html/399.html</link>
		<comments>http://www.ai7.org/wp/html/399.html#comments</comments>
		<pubDate>Wed, 20 Aug 2008 02:08:50 +0000</pubDate>
		<dc:creator>amao</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.ai7.org/wp/?p=399</guid>
		<description><![CDATA[只找到SciPy中有求函数最小值的fmin函数。但是这个似乎是求解无约束优化的。
最近刚开始学python，有没有高手指点一下。
]]></description>
			<content:encoded><![CDATA[<p>只找到SciPy中有求函数最小值的fmin函数。但是这个似乎是求解无约束优化的。</p>
<p>最近刚开始学python，有没有高手指点一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai7.org/wp/html/399.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
