{"id":4689,"date":"2013-02-01T12:01:36","date_gmt":"2013-02-01T04:01:36","guid":{"rendered":"http:\/\/jpuyy.com\/?p=4689"},"modified":"2013-02-15T23:04:33","modified_gmt":"2013-02-15T15:04:33","slug":"python-simple-programs-c","status":"publish","type":"post","link":"https:\/\/jpuyy.com\/?p=4689","title":{"rendered":"python\u7684\u5165\u95e8\u7684\u51e0\u4e2a\u4f8b\u5b50(\u4e0b)"},"content":{"rendered":"<p>http:\/\/jpuyy.com\/2012\/12\/python-simple-programs-a.html<\/p>\n<p>http:\/\/jpuyy.com\/2013\/01\/python-simple-programs-b.html<\/p>\n<p>\u4f8b.20 \u7d20\u6570\u7b5b\u9009\uff0c\u751f\u6210\u5668&#8211;Prime numbers sieve w\/fancy generators<\/p>\n<p>\u751f\u6210\u4ece2\u52301000\u4ee5\u5185\u7684\u7d20\u6570<\/p>\n<pre dir=\"ltr\" id=\"CA-9d1cc735dd6c60cf90bec73b41c65d20368bbddb\" lang=\"en\">import itertools\r\n\r\ndef iter_primes():\r\n     # an iterator of all numbers between 2 and +infinity\r\n     numbers = itertools.count(2)\r\n\r\n     # generate primes forever\r\n     while True:\r\n         # get the first number from the iterator (always a prime)\r\n         prime = numbers.next()\r\n         yield prime\r\n\r\n         # this code iteratively builds up a chain of\r\n         # filters...slightly tricky, but ponder it a bit\r\n         numbers = itertools.ifilter(prime.__rmod__, numbers)\r\n\r\nfor p in iter_primes():\r\n    if p &gt; 1000:\r\n        break\r\n    print p<\/pre>\n<p>\u4f8b21.xml\/html\u89e3\u6790&#8211;XML\/HTML parsing<\/p>\n<pre dir=\"ltr\" id=\"CA-67cf4b4b8212c187cdbbcd838f1866f9ffd0c8fe\" lang=\"en\">dinner_recipe = '''&lt;html&gt;&lt;body&gt;&lt;table&gt;\r\n&lt;tr&gt;&lt;th&gt;amt&lt;\/th&gt;&lt;th&gt;unit&lt;\/th&gt;&lt;th&gt;item&lt;\/th&gt;&lt;\/tr&gt;\r\n&lt;tr&gt;&lt;td&gt;24&lt;\/td&gt;&lt;td&gt;slices&lt;\/td&gt;&lt;td&gt;baguette&lt;\/td&gt;&lt;\/tr&gt;\r\n&lt;tr&gt;&lt;td&gt;2+&lt;\/td&gt;&lt;td&gt;tbsp&lt;\/td&gt;&lt;td&gt;olive oil&lt;\/td&gt;&lt;\/tr&gt;\r\n&lt;tr&gt;&lt;td&gt;1&lt;\/td&gt;&lt;td&gt;cup&lt;\/td&gt;&lt;td&gt;tomatoes&lt;\/td&gt;&lt;\/tr&gt;\r\n&lt;tr&gt;&lt;td&gt;1&lt;\/td&gt;&lt;td&gt;jar&lt;\/td&gt;&lt;td&gt;pesto&lt;\/td&gt;&lt;\/tr&gt;\r\n&lt;\/table&gt;&lt;\/body&gt;&lt;\/html&gt;'''\r\n\r\n# In Python 2.5 or from http:\/\/effbot.org\/zone\/element-index.htm\r\nimport xml.etree.ElementTree as etree\r\ntree = etree.fromstring(dinner_recipe)\r\n\r\n# For invalid HTML use http:\/\/effbot.org\/zone\/element-soup.htm\r\n# import ElementSoup, StringIO\r\n# tree = ElementSoup.parse(StringIO.StringIO(dinner_recipe))\r\n\r\npantry = set(['olive oil', 'pesto'])\r\nfor ingredient in tree.getiterator('tr'):\r\n    amt, unit, item = ingredient\r\n    if item.tag == \"td\" and item.text not in pantry:\r\n        print \"%s: %s %s\" % (item.text, amt.text, unit.text)<\/pre>\n<p>\u4f8b28. 8\u7687\u540e\u95ee\u9898(\u81ea\u5b9a\u4e49\u4f8b\u5916)8-Queens Problem (define your own exceptions)<\/p>\n<div>\n<div dir=\"ltr\" lang=\"en\">\n<pre dir=\"ltr\" id=\"CA-602a015c77777ff277a726d1f18a005f829ae1b1\" lang=\"en\">BOARD_SIZE = 8\r\n\r\nclass BailOut(Exception):\r\n    pass\r\n\r\ndef validate(queens):\r\n    left = right = col = queens[-1]\r\n    for r in reversed(queens[:-1]):\r\n        left, right = left-1, right+1\r\n        if r in (left, col, right):\r\n            raise BailOut\r\n\r\ndef add_queen(queens):\r\n    for i in range(BOARD_SIZE):\r\n        test_queens = queens + [i]\r\n        try:\r\n            validate(test_queens)\r\n            if len(test_queens) == BOARD_SIZE:\r\n                return test_queens\r\n            else:\r\n                return add_queen(test_queens)\r\n        except BailOut:\r\n            pass\r\n    raise BailOut\r\n\r\nqueens = add_queen([])\r\nprint queens\r\nprint \"\\n\".join(\". \"*q + \"Q \" + \". \"*(BOARD_SIZE-q-1) for q in queens)<\/pre>\n<div>\u00a0\u4f8b33\uff0c\u731c\u6570\u5b57\u6e38\u620f<\/div>\n<div><\/div>\n<div>\n<div>\n<div dir=\"ltr\" lang=\"en\">\n<pre dir=\"ltr\" id=\"CA-6cd80cdc75f9a244a4e18a445ce81e79dfee4b14\" lang=\"en\">import random\r\n\r\nguesses_made = 0\r\n\r\nname = raw_input('Hello! What is your name?\\n')\r\n\r\nnumber = random.randint(1, 20)\r\nprint 'Well, {0}, I am thinking of a number between 1 and 20.'.format(name)\r\n\r\nwhile guesses_made &lt; 6:\r\n\r\n    guess = int(raw_input('Take a guess: '))\r\n\r\n    guesses_made += 1\r\n\r\n    if guess &lt; number:\r\n        print 'Your guess is too low.'\r\n\r\n    if guess &gt; number:\r\n        print 'Your guess is too high.'\r\n\r\n    if guess == number:\r\n        break\r\n\r\nif guess == number:\r\n    print 'Good job, {0}! You guessed my number in {1} guesses!'.format(name, guesses_made)\r\nelse:\r\n    print 'Nope. The number I was thinking of was {0}'.format(number)<\/pre>\n<div>\u00a0\u628a\u4ee3\u7801\u6253\u4e86\u4e00\u904d\uff0c\u8fd8\u5f97\u4ed4\u7ec6\u518d\u7ec3\u51e0\u904d\u3002<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/jpuyy.com\/2012\/12\/python-simple-programs-a.html http:\/\/jpuyy.com\/2013\/01\/python-simple-programs-b.html \u4f8b.20 \u7d20\u6570\u7b5b\u9009\uff0c\u751f\u6210\u5668&#8211;Prime numbers sieve w\/fancy generators \u751f\u6210\u4ece2\u52301000\u4ee5\u5185\u7684\u7d20\u6570 import itertools def iter_primes(): # an iterator of all numbers between 2 and +infinity numbers = itertools.count(2) # generate primes forever while True: # get the first number from the iterator (always a prime) prime = numbers.next() yield prime # this code iteratively builds up a [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[76],"tags":[23],"class_list":["post-4689","post","type-post","status-publish","format-standard","hentry","category-python","tag-summary"],"_links":{"self":[{"href":"https:\/\/jpuyy.com\/index.php?rest_route=\/wp\/v2\/posts\/4689","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jpuyy.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jpuyy.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jpuyy.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/jpuyy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4689"}],"version-history":[{"count":3,"href":"https:\/\/jpuyy.com\/index.php?rest_route=\/wp\/v2\/posts\/4689\/revisions"}],"predecessor-version":[{"id":4698,"href":"https:\/\/jpuyy.com\/index.php?rest_route=\/wp\/v2\/posts\/4689\/revisions\/4698"}],"wp:attachment":[{"href":"https:\/\/jpuyy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jpuyy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jpuyy.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}