<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 4.3.2 第二層設計 接下來需要對第二層上的每個模塊進行精化。 首先看 getYear 函數。這個函數的功能只是輸入年份數據,可以直接用 Python 的基本 語句實現,無需分解為新的功能模塊。具體代碼如下: ``` def getYear(): print "This program prints the calendar of a given year." year = input("Please enter the year (after 1900): ") return year ``` 接著考慮 firstDay 函數的設計。這個函數的功能是計算 year 年 1 月 1 日是星期幾,因為年歷是按星期來組織每一天的顯示位置的,而只要知道 1 月 1 日的顯示位置,其后所有日期的顯示位置也就確定了。 在 calendar 程序的規格說明中說明了,我們以 1900 年 1 月 1 日(星期一)作為基準日, 只要算出 year 年 1 月 1 日距離基準日的天數,就能知道這一天是星期幾。因為從基準日開 始,過 1 天是星期二,過 2 天是星期三,…,過 6 天是星期日,過 7 天又是星期一,…。一 般地,過 n 天是星期(n+1)%7(值為 0 表示星期天)。 那么,從基準日到 year 年 1 月 1 日總共過了多少天呢?只需一點常識,就能得出下面 的公式: ``` (year – 1900) * 365 + k ``` 其中 k 是從 1900 到 year(不含)之間的閏年個數。 看上去閏年個數 k 還不清楚如何求得,我們按慣例假設一個新函數 leapyears()能夠 返回所需的 k。于是可以設計 firstDay 函數如下: ``` def firstDay(year): k = leapyears(year) n = (year – 1900) * 365 + k return (n + 1) % 7 ``` 最后考慮 printCalendar 函數的設計,該函數的任務是在合適的位置按日歷格式顯示一年 12 個月的日歷。由于問題有點復雜,我們照例進行任務分解。12 個月的日歷輸出顯然可以用一個 for 循環來實現,循環體是顯示一個月日歷的代碼。每個月需要先打印標題(月份和星期的名稱),然后再打印日期,假設函數 heading()和 oneMonth()分別執行這兩個任務,則 printCalendar 的代碼如下: ``` def printCalendar(year,w): print print "=========== " + str(year) + " ==========" first = w for month in range(12): heading(month) first = oneMonth(year,month,first) ``` 函數體的第一行用于打印年份信息,接下去是打印 12 個月的日歷的 for 語句。打印每個月 的日歷需要知道該月 1 日是星期幾。printCalendar 的參數 w 是前面算出來的 1 月 1 日 的星期信息,2 月到 12 月的 1 日則由 oneMonth 函數返回至此,我們完成了第二層設計, 可以用圖 4.8 中的結構圖表示到目前為止的設計結果。注意,為簡明起見,圖中省略了各模 塊之間的界面數據。 ![](https://box.kancloud.cn/2016-02-22_56cafcdf72530.png) 圖 4.8 calendar 程序的第二層結構圖
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看