本文推è一个网站:The Python Challenge。如果有è°æƒ³å¿«é€ŸæŽŒæ¡ Python (编程è¯è¨€ï¼‰ï¼Œæˆ‘建议å‰å¾€è¿™ä¸ªç½‘站开始过关游æˆã€‚
我的工作ä¸æ˜¯ç¨‹åºå‘˜ï¼Œæˆ‘ç›®å‰æƒ³è±¡ä¸å‡ºåœ¨è¿‘期的任何事情å¯èƒ½ä¼šç”¨åˆ° Python,而且我以å‰å¯¹Python è¯è¨€çš„了解基本上是零。这两天我满脑å想的都是 Python。
我ä¸çŸ¥é“æˆ‘æ˜¯ä¸ºäº†å¦ Python æ‰çŽ©æ¸¸æˆè¿‡å…³ï¼Œè¿˜æ˜¯ä¸ºäº†è¿‡å…³æ‰å¦ Pythonã€‚æ‰€ä»¥å¦‚æžœä½ åªæ˜¯æƒ³æ‰¾ä¸ªå¥½æ¸¸æˆçŽ©æ‰“å‘时间,我推èä½ å¦ Python.
æ¯ä¸€å…³é¢˜ç›®éƒ½è®¾è®¡éƒ½éžå¸¸ç²¾å·§ã€‚以下我尽å¯èƒ½è‰¯æ€§åœ°å‰§é€ä¸€ä¸‹:)
第0å…³æ˜¯è®©ä½ è®¡ç®—2çš„35æ¬¡æ–¹ã€‚æ ¹æ®ä»¥å‰ C å’Œ Fortran çš„ç»éªŒï¼Œæˆ‘感到这么大的整数肯定ä¸èƒ½ç›´æŽ¥ç®—,必须写一段程åºï¼Œæ¯ç®—出æ¥ä¸€ä½å°±å˜å…¥æ•°ç»„。。。ä¸è¿‡æˆ‘还是直接用 Mathematica 算出了ç”案。
到第1关,è¦æ±‚ç ´è¯‘ä¸€æ®µå¯†ç ,我想这时候得æ£ç»ç¼–程了。结果找æ¥ä¸€æœ¬ä¹¦ã€ŠLearning Pythonã€‹ä¸€çœ‹ï¼ŒåŽŸæ¥ Python 支æŒä»»æ„长度的整数ï¼ä¹Ÿå°±æ˜¯è¯´ç¬¬0关的æ£ç¡®è¿‡æ³•æ˜¯
Print 2**38
就这么简å•ï¼è¿™ä¸ªäº‹å®žä½¿æˆ‘对 Python 的好感增大了åå€ã€‚那本书里é¢å¹¶æ²¡æœ‰è¯´ Python 是怎么åšåˆ°è¿™ä¸€ç‚¹çš„,也没说为什么会æ供这个功能。感觉这个功能似乎并ä¸ç‰¹åˆ«å®žç”¨ï¼Œä½†æ˜¯æˆ‘想所有人都特别喜欢这个功能。
继ç»çœ‹ä¹¦ï¼Œæˆ‘å‘现Python è¯è¨€æ›´åƒæ˜¯ Mathematica å’Œ Matlab。å˜é‡ä¸ç”¨äº‹å…ˆå®šä¹‰ï¼Œæžå…¶çµæ´»çš„æ•°ç»„ï¼Œä¸°å¯Œçš„å‡½æ•°åº“ã€‚è¿˜æœ‰ä¸€ä¸ªå¥½å¤„æ˜¯å®ƒæ˜¯ä¸€ç§ script å¼çš„è§£é‡Šæ€§ï¼ˆä¸¥æ ¼çš„è®²å¹¶éžå®Œå…¨å¦‚æ¤ï¼‰çš„è¯è¨€ï¼Œä½ å¯ä»¥åœ¨å‘½ä»¤è¡Œä¸€æ¡å‘½ä»¤ä¸€æ¡å‘½ä»¤çš„执行。这ç§åšæ³•ä¸ä»…ä¿è¯äº†å¦ä¹ 过程ä¸çœŸæ£çš„å³æ—¶å馈,更æ供了一个å¯ä»¥è¾¹å° 试边编程的工作过程。
我写了人生第一个 Python 程åºï¼Œç ´è¯‘了密ç ,过了第1å…³ã€‚ç»“æžœç ´è¯‘å‡ºæ¥çš„文本说,推è使用xx(æ¤å¤„ä¸é€éœ²ï¼‰å‡½æ•°ï¼Œè€Œè¿™ä¸ªå‡½æ•°ï¼Œæˆ‘那本《Learning Python》里é¢æ²¡æœ‰ï¼ç»“果上网æœç´¢åˆ°è¿™ä¸ªå‡½æ•°çš„用法,é‡æ–°å†™äº†ä¸€ä¸ªç‰ˆæœ¬ã€‚
第2和第3关都很简å•ã€‚把第1关里å¦ä¼šçš„那个函数用上的è¯ï¼Œç¬¬2关会更简å•ã€‚我ä¸ç†Ÿæ‚‰æ£åˆ™è¡¨è¾¾å¼ï¼Œå°±ç®—用最一般的方法åšï¼Œç¨‹åºä¹Ÿä¸ä¼šè¶…过15行。
第4å…³å¦åˆ°çš„东西是 Python 有个简å•çš„库函数,å¯ä»¥ä½œä¸ºä¸€ä¸ªè‡ªåŠ¨æŠ“å–或者读å–网页的机器人。
第5关问我 “Peak Hell” 的读音åƒä»€ä¹ˆï¼Ÿæˆ‘猜了一个 pickle,结果一æœç´¢ï¼ŒPython 还真有个pickle。但是 pickle 什么?åå¤æŠŠé¢˜ç›®é¡µé¢ html 代ç è¯»äº†å¥½å‡ é,终于悟出…..
pickle 之åŽçš„东西我ä»ç„¶æ²¡æ³•ç›´æŽ¥è¯»ã€‚开始猜测是æŸç§ç¼–ç ,åå¤è¯•äº†ord å’Œchr 结果ä¸å¯¹ã€‚然åŽçŒœåˆ°äº†ã€‚
这些题目的设计都有这个特点:ä¸ç›´æŽ¥å‘Šè¯‰ä½ è®©ä½ å¹²ä»€ä¹ˆï¼Œä¸çŸ¥é“从哪入手,一切都得猜。我å‘现真æ£çš„编程时间å¯èƒ½åªå 解题时间的一åŠã€‚
第6关我åšå‡ºäº†å‰åŠéƒ¨åˆ†ï¼Œç„¶åŽå®žåœ¨æƒ³ä¸å‡º”Collect the comments”è¿™å¥è¯åˆ°åº•æ˜¯ä»€ä¹ˆæ„æ€ã€‚我一开始猜测是ä¸æ˜¯éœ€è¦åœ¨ä¸Šç½‘,从æŸä¸ªç½‘页的注释ä¸èŽ·å¾—ç”案。我用上网机器人按照第4关的办法抓å–了网页(事实 è¯æ˜Žç¬¬4关的åšæ³•ä¸è¡Œï¼Œå› 为现在有了一个循环指å‘)寻找注释,结果所有网页内都没有注释。
我本æ¥åœ¨æƒ³ä¸æœç´¢ç”案的情况下过所有的关,这一次没挺ä½ã€‚有一个网页给了点æ示:原æ¥zip文件也带注释啊ï¼æˆ‘è¿™æ‰çŸ¥é“ Python å¯ä»¥å¤„ç† zip。
ç›®å‰æˆ‘在第7关。没有任何文å—ï¼Œå°±æ˜¯ä¸€å¼ æœ‰ç‚¹æ€ªçš„ png å›¾ã€‚çœ‹æ¥ Python å¯ä»¥å¤„ç†å›¾å½¢ã€‚
æ¯ä¸€å…³éƒ½èƒ½å¦åˆ°ä¸€ç‚¹æ–°çš„东西,å‘çŽ°åŽŸæ¥ Python 还能åšè¿™ä¸ªã€‚ 《Learning Python》这本书的作用仅é™äºŽå…¥é—¨ï¼Œé‚£äº›æœ‰æ„æ€çš„函数的用法都得上网查。目å‰ä¸ºæ¢æ‰€æœ‰é—®é¢˜çš„解决代ç 都很çŸï¼Œæˆ‘ä¸çŸ¥é“最åŽä¼šä¸ä¼šè®©æˆ‘们写一个大点的程åºã€‚
æ®è¯´è¿™ä¸ªç½‘ç«™2005年就有了,éžå¸¸é—憾一直到现在æ‰å¬äººè¯´ã€‚è¿™ç§çŽ°å¦çŽ°ç”¨ï¼Œå³æ—¶å馈的的å¦æ³•å¾ˆå¯èƒ½æ˜¯å¦å¥½ä¸€é—¨è¯è¨€çš„最佳方法。我感到这些题目就算是一个ä¸å¦ç”Ÿä¹Ÿèƒ½åšå‡ºæ¥ï¼Œå¦‚果我上ä¸å¦çš„时候有这个网站,生活该多么美好啊。