[問題]for loop 搭配 if 問題

看板Python作者 (liveisawesome)時間8年前 (2017/03/27 17:22), 8年前編輯推噓2(2011)
留言13則, 7人參與, 最新討論串1/2 (看更多)
各位版友好,小弟最近在自學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:")) 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.225.167 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1490606557.A.825.html

03/27 17:29, , 1F
試試 if m in dist == False
03/27 17:29, 1F

03/27 17:38, , 2F
" if __ not in __ "
03/27 17:38, 2F
※ 編輯: rogera (140.112.16.181), 03/27/2017 19:00:25

03/27 19:04, , 3F
不好意思,原先if 裡是typo,已改成m 還是不行. 不過改成
03/27 19:04, 3F

03/27 19:04, , 4F
not in 就可以了!不知為何用 if m in dust ==FaLee 不
03/27 19:04, 4F

03/27 19:04, , 5F
行..?
03/27 19:04, 5F

03/27 19:45, , 6F
少括號吧
03/27 19:45, 6F

03/27 19:46, , 7F
if (m in dist)==False不過這樣不太pytonic就是
03/27 19:46, 7F

03/27 20:34, , 8F
因為 Python 的 condition chaining 會把那段解讀成
03/27 20:34, 8F

03/27 20:35, , 9F
(m in dist) and (dist == False)
03/27 20:35, 9F

03/27 20:39, , 10F
更正, 應該叫 comparison chaining 才對, 參見文件 6.10
03/27 20:39, 10F

03/27 21:03, , 11F
老實說 除非大家都很熟,寫這種混淆 code 太過炫技
03/27 21:03, 11F

03/27 21:34, , 12F
http://codepad.org/BC4gOPPD << 沒有可讀性的一行
03/27 21:34, 12F

03/28 16:13, , 13F
文章代碼(AID): #1OsDdTWb (Python)
討論串 (同標題文章)
文章代碼(AID): #1OsDdTWb (Python)