<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 4.3.3 第三層設計 首先考慮函數 leapyears 的實現,該函數的功能是計算從 1900 到 year(不含)之間 的閏年個數。這可以用逐年檢驗的方法來實現①:對從 1900 到 year-1 的每一年,測試該 年是否閏年,如果是則為計數變量 count 加 1。于是得到如下代碼: ``` def leapyears(year): count = 0 for y in range(1900,year): if y%4 == 0 and (y%100 != 0 or y%400 == 0): count = count + 1 return count ``` 其中 if 語句的布爾表達式是根據閏年的規定得到的:年份能被 4 整除并且不能被 100 整除(除非該年能被 400 整除)。 再考慮函數 heading 的實現,該函數用于打印每個月日歷的標題部分(月份和星期名 稱)。我們將月份名稱放在一個列表中,然后通過傳遞給 heading 函數的月份值作為索引 來查找月份名稱。代碼如下: ``` def heading(m): months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"] print " %s " % (months[m]) print "Mon Tue Wed Thu Fri Sat Sun" ``` > ① 如果從公元 1 年算起,到 year 年為止的閏年個數可用公式 year/4 ? year/100 + year/400 計算。 第三層的最后一個函數是 oneMonth(),其功能是輸出一個月的日歷。由于日歷輸出要求在合適的位置上顯示合適的日期,這個用于輸出的子程序反而是整個程序最費功夫的部 分。為了安排日歷布局,需要了解每月 1 日是星期幾和每月有多少天,還需要確定何時換行顯示。我們采用一個長度為 6×7=42 的列表①作為日歷布局框架(每行 7 天,一個月最多占用 6 行),只需將一個月的每一天存入這個框架的合適位置,然后輸出這個列表即可。圖4.9 是日歷框架的示意圖。 ![](https://box.kancloud.cn/2016-02-22_56cafcdf873be.png) 圖 4.9 每個月的日歷布局 由于問題有點復雜,我們再次分解任務,用三個子程序來實現 oneMonth():days() 函數計算該月份的天數,layout()函數用于布置該月每一天在日歷框架中的位置 ,printMonth()用于輸出日歷。即: ``` def oneMonth(year,month,first): d = days(year,month) frame = layout(first,d) printMonth(frame) return (first + d) % 7 ``` oneMonth 函數有三個參數:year 表示年份,month 表示月份,first 表示該月 1 日是星期幾(0~6)。對于一月份,first 由上層模塊 printCalendar 的參數 w 提供; 對于其他月份,first 可由上一個月的 first 和天數確定,因此我們讓 oneMonth 在打印 本月日歷后返回下個月 1 日的星期序號。 > ① 使用二維列表或許會更直觀。 設計至此,結構圖演變為圖 4.10 所示的情況。 ![](https://box.kancloud.cn/2016-02-22_56cafcdfc93b5.png) 圖 4.10 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>

                              哎呀哎呀视频在线观看