iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
自我挑戰組

玩程式新手村 – C和Python系列 第 29

第29天 - Python 小露身手 (彩蛋)

  • 分享至 

  • xImage
  •  

這篇文章不是介紹如何編寫Python程式,而是閒聊我在學習Python時,讀到有趣的點點滴滴。

  • 在終端機輸入下面指令:

    • python -m calendar 2024  顯示 2024年 整年度的月曆
    • python -m calendar 2024 1  顯示 2024年 一月單月的月曆

    這裡的「calendar」是Python 內建處理日期相關的模組,可以將日曆輸出成為常見的日曆格式。

    python -m xxx 是將模組當作腳本 (script) 來執行。xxx 是 模組名稱,不包含 副檔名(.py

    當然也可以寫成 Python 的程式碼如下:

    import calendar
    tc = calendar.TextCalendar()
    print(tc.formatyear(2024, c=3, m=4))  # 顯示 2024年 整年度的月曆
    print(calendar.month(2024, 1))        # 顯示 2024年 一月單月的月曆
    
  • .py.ipynb 檔案輸入程式碼 import this ,然後執行,就會輸出下面文字。
    或是在終端機輸入指令: python -c "import this"

    The Zen of Python, by Tim Peters
    
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!
    

    這是有名的 Python之禪,也是官方認證的彩蛋 (Easter Egg)。
    這是由下面的加密文字解譯出。背景故事可以參考 🌐 import this and the Zen of Python

    s = """Gur Mra bs Clguba, ol Gvz Crgref
    
    Ornhgvshy vf orggre guna htyl.
    Rkcyvpvg vf orggre guna vzcyvpvg.
    Fvzcyr vf orggre guna pbzcyrk.
    Pbzcyrk vf orggre guna pbzcyvpngrq.
    Syng vf orggre guna arfgrq.
    Fcnefr vf orggre guna qrafr.
    Ernqnovyvgl pbhagf.
    Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
    Nygubhtu cenpgvpnyvgl orngf chevgl.
    Reebef fubhyq arire cnff fvyragyl.
    Hayrff rkcyvpvgyl fvyraprq.
    Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
    Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
    Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
    Abj vf orggre guna arire.
    Nygubhtu arire vf bsgra orggre guna *evtug* abj.
    Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
    Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
    Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
    
    d = {}
    for c in (65, 97):
        for i in range(26):
            d[chr(i+c)] = chr((i+13) % 26 + c)
    
    print("".join([d.get(c, c) for c in s])) # 解譯出 Python之禪
    
  • Python 說文解字:

    • Pythonic :具有Python 特色 (乾淨、簡單、優美)

    • Pythonista:表示一個熟練或喜愛使用Python來完成工作的人。由Python和-ista組成的詞。

    • Pythoneer:表示一個在Python領域有創新或領導力的人。由Python和pioneer組成的詞。

    • 這程式語言為何取做 Python?
      Python的名稱來自於創始者Guido van Rossum喜愛的一部電視劇 “Monty Python’s Flying Circus”(蒙提·派森的飛行馬戲團)。

    • 甚麼是 PEP?
      是 Python Enhancement Proposals 的簡稱 (翻譯成: Python 改進建議)
      例如 :常被提到的 PEP 8 風格指南

      🌐 PEP 8 – Style Guide for Python Code

Python彩蛋的傳送門

🌐 Command line and environment — Python documentation
🌐 PEP 20 – The Zen of Python | peps.python.org
🌐 吉多·范羅蘇姆 - 維基百科,自由的百科全書


上一篇
第28天 - C 和 Python的作用範圍(scope)
下一篇
第30天 - 玩程式新手村 - 鐵人賽回顧
系列文
玩程式新手村 – C和Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言