[問題] 關於while跟break

看板Python作者 (Skyrimrvks)時間10年前 (2014/05/16 15:14), 10年前編輯推噓9(9028)
留言37則, 5人參與, 最新討論串1/1
各位前輩好,小弟第一次在ptt發文,如有排版問題請見諒 關於while and break有點問題 前天期中考考了一題是定義了26個英文字母跟10個數字 5*4的點矩陣 使用者輸入一行英文+數字要印出相對應的點矩陣, 如果是空格則輸出五格空格 我已經做完他的要求了,但我想要加上條件限制 即如果輸入的不是英文與數字,則印出error,並要求重新輸入 如果輸入的是英文與數字的組合,則印出點矩陣,並要求重新輸入 我的問題是我以下程式碼在不是英文與數字的組合的時候無法重新輸入 我應該怎麼修改我的程式?我想了想卡住了= = 是不是跟break的用法有關? 另外一個問題是break的終止迴圈是終止上一個for而已嗎? 例如 for i in range(a): for j in range(b): print('yoyo') break 這個break是把兩個for都跳出還是只有裡面的for ? (抱歉小弟是第一次學程式語言,還只是個新手 QQ) 感謝大家讀完 第一個問題的程式碼:http://pastebin.com/PvGYN2Ur cmap = ( (4,10,17,31,17),(30,17,30,17,30),(14,17,16,17,14),(30,17,17,17,30), (31,16,30,16,31),(31,16,30,16,16),(31,16,19,17,31),(17,17,31,17,17), (14,4,4,4,14),(7,2,2,10,4),(17,18,28,18,17),(16,16,16,16,31), (17,27,21,17,17),(17,25,21,19,17),(14,17,17,17,14),(30,17,30,16,16), (14,17,21,19,15),(30,17,30,18,17),(31,16,31,1,31),(31,4,4,4,4), (17,17,17,17,14),(17,17,17,10,4),(17,17,21,27,17),(17,10,4,10,17), (17,10,4,4,4),(31,2,4,8,31) ) nmap =( (31,17,17,17,31),(4,4,4,4,4),(31,1,31,16,31),(31,1,31,1,31),(17,17,31,1,1), (31,16,31,1,31),(31,16,31,17,31),(31,2,4,8,8),(31,17,31,17,31),(31,17,31,1,31) ) while True: data = str.upper(input('ABC+123:')) for i in range(len(data)): if 48<ord(data[i])<90: print('ok:') break else: #<--------------------原文少打的部分 print('error 要怎麼重新輸入Q_Q') break #<--------------------原文少打的部分 for i in range(5): print() for j in range(len(data)): print(' ',end="") for k in range(5): if 65<=ord(data[j])<=90: pdata=cmap[ord(data[j])-65][i] elif 48<=ord(data[j])<=57: pdata=nmap[ord(data[j])-48][i] dot=pdata//(2**(4-k))%2 if dot: print(data[j],end="") else: print(' ',end="") print('\n\n') 後來寫的版本 1用try-except 2用if-else-break http://codepad.org/7Wq5cVRy http://codepad.org/APc3zaos -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.189.113 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1400224494.A.0BB.html

05/16 15:23, , 1F
break是終止一層,沒看到你error印在哪,單看敘述的話
05/16 15:23, 1F

05/16 15:23, , 2F
你學過continue這個用法嗎、
05/16 15:23, 2F

05/16 15:28, , 3F
btw python 有 isdigit(),isalpha()可用
05/16 15:28, 3F

05/16 16:11, , 4F
抱歉 我是印在while下第一個for 裡面else裡
05/16 16:11, 4F

05/16 16:11, , 5F
網址裡的是原本打的
05/16 16:11, 5F

05/16 16:13, , 6F
可是如果是a='a1'這樣 a.isalpha就會判定False
05/16 16:13, 6F

05/16 16:14, , 7F
不過我是英文跟數字都可以 而其他像是~!@#$等等的不行
05/16 16:14, 7F

05/16 16:16, , 8F
不過isdigit()跟isalpha()跟我設定ord()範圍在數字到英
05/16 16:16, 8F

05/16 16:16, , 9F
文這樣不行嗎??
05/16 16:16, 9F
※ 編輯: ersfw4418 (114.32.189.113), 05/16/2014 16:20:01

05/16 19:58, , 10F
例外的處理 怎麼不用try except?
05/16 19:58, 10F

05/16 20:21, , 11F
將輸入list化再分析
05/16 20:21, 11F

05/16 20:28, , 12F
黏在一起無法判斷,變list把它們分開,再判斷
05/16 20:28, 12F

05/17 03:18, , 13F
我後來查了try except的用法,分別用有else跟沒else
05/17 03:18, 13F

05/17 03:19, , 14F
各試了一次 有得出成功的結果了:) 另外得出錯誤跳出後
05/17 03:19, 14F

05/17 03:20, , 15F
再檢查一次的方法也成功了 感謝大大的回答
05/17 03:20, 15F

05/17 03:21, , 16F
@fun大大 是list有什麼方法可以檢查是否為數字跟英文嗎
05/17 03:21, 16F

05/17 03:22, , 17F
不然我用字串的編碼[]去跑迴圈測試是否為數字與英文是否
05/17 03:22, 17F

05/17 03:23, , 18F
會比較慢 不過這樣也能判斷不是嗎?
05/17 03:23, 18F

05/17 03:23, , 19F
還是我誤會您的意思了?
05/17 03:23, 19F
※ 編輯: ersfw4418 (114.32.189.113), 05/17/2014 03:34:21

05/17 08:26, , 20F
喔,都可以阿,你的寫法是比較不pythonic
05/17 08:26, 20F

05/17 08:29, , 21F
我是給另外一個方式來判斷,程式運作有很多種寫法
05/17 08:29, 21F

05/17 08:30, , 22F
data=list(data);for I in data;
05/17 08:30, 22F

05/17 08:32, , 23F
if I.isdigit() or I.isalpha():......else: .....
05/17 08:32, 23F

05/17 12:40, , 24F
前面大大有說到isdigit(),isalpha()可以判斷
05/17 12:40, 24F

05/17 12:41, , 25F
哦 您的意思是一開始就list而不是str就可以個別判斷了
05/17 12:41, 25F

05/17 12:42, , 26F
pythonic的意思是盡量使用python已有的代碼嗎?
05/17 12:42, 26F

05/17 12:43, , 27F
因為教授教的時候就說是想教程式設計而不是針對python
05/17 12:43, 27F

05/17 12:44, , 28F
可能就是這樣我才會不知道很多指令的用法吧Q_Q
05/17 12:44, 28F

05/17 12:44, , 29F
我是個人對python特別有興趣才去的
05/17 12:44, 29F

05/17 14:39, , 31F
Being Pythonic is not a skill; it's style.
05/17 14:39, 31F

05/17 19:42, , 32F
如果不是要開發大型的專案 其實也不用鳥什麼style
05/17 19:42, 32F

05/17 23:05, , 33F
感謝感謝 其實我現在大學所學的不太會用到程式語言
05/17 23:05, 33F

05/17 23:06, , 34F
大概就是導入數據跟計算一些東西跟繪圖
05/17 23:06, 34F

05/17 23:07, , 35F
所以我想學好基本再看看能不能把scipy numpy matplotlib
05/17 23:07, 35F

05/17 23:07, , 36F
學起來
05/17 23:07, 36F

05/17 23:08, , 37F
(其實只是硬要把現在學的跟python扯上關係=_=)
05/17 23:08, 37F
文章代碼(AID): #1JTRhk2x (Python)