Re: [問題]for loop 搭配 if 問題

看板Python作者 (Jaguar)時間8年前 (2017/03/28 11:54), 編輯推噓2(206)
留言8則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《rogera (liveisawesome)》之銘言: : 各位版友好,小弟最近在自學python練習題目時,碰到個問題想請各位版友解惑一下 : 在跑結果時,似乎bug一直出現在 if 的流程控制裡,想請問這樣寫為什麼會有錯.. : 題目: : Q:如何輸入一個區域名稱,找出這個區域所代表的郵遞區號? (ex. 輸入:新店區 回傳: : 23 : # 下面 zipcode 存放台北市,基隆市,新北市各區的郵遞區號 : zipcode = {"台北市":{"中正區": 100, "大同區": 103, "中山區": 104, "松山區": 10 : 5, : "基隆市":{"仁愛區": 200, "信義區": 201, "中正區": 202, "中山區": 20 : 3, : "新北市": {"萬里區": 207, "金山區": 208, "板橋區": 220, "汐止區": 2 : 21 : 自己寫的Ans: : def outputzip(m): : for p in zipcode: : dist=zipcode[p] : if m in dist == False: # 似這句一直沒有起作用.. : continue : print(dist[m]) : outputzip(input("please input a district:")) : 謝謝!! 自己測試了一下,這樣寫應該可讀性更高,請參考: zipcode = { 'Taipei':{'A': 100, 'B': 103, 'C': 104, 'D': 105}, 'Keelung':{'E': 200, 'F': 201, 'G': 202, 'H': 203} } def input(place): global zipcode for index in range(2): if place in zipcode.values()[index]: return zipcode.values()[index][place] -- Sent from my Windows -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.92.30.249 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1490673284.A.340.html

03/28 19:53, , 1F
可以直接 for index in zipcode
03/28 19:53, 1F

03/28 22:28, , 2F
都把zipcode弄成dict了,還不去match key call value?
03/28 22:28, 2F

03/28 22:34, , 3F
試問 明天你縣市多了 你是不是又要改 code?
03/28 22:34, 3F

03/29 13:12, , 4F
沒人三天兩頭就在改縣市數量的啦...XDDDD
03/29 13:12, 4F

03/29 15:12, , 5F
前3樓的建議其實對程式的維護比較好
03/29 15:12, 5F

03/29 22:12, , 6F
同意樓上 可以的話,當然是寫活一點比較好維護
03/29 22:12, 6F

03/29 22:13, , 7F
(像我沒能力...就先寫死再說了....理由同上:沒那麼常改)
03/29 22:13, 7F

03/31 00:23, , 8F
data 和邏輯要分離是一種習慣,不然再利用性太差
03/31 00:23, 8F
文章代碼(AID): #1OsTw4D0 (Python)
討論串 (同標題文章)
文章代碼(AID): #1OsTw4D0 (Python)