[問題] 關於while跟break

作者: ersfw4418 (隱身術)   2014-05-16 15:14:51
各位前輩好,小弟第一次在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: #<
作者: tiefblau (tiefblau)   2014-05-16 15:23:00
break是終止一層,沒看到你error印在哪,單看敘述的話你學過continue這個用法嗎、btw python 有 isdigit(),isalpha()可用
作者: ersfw4418 (隱身術)   2014-05-16 16:11:00
抱歉 我是印在while下第一個for 裡面else裡網址裡的是原本打的可是如果是a='a1'這樣 a.isalpha就會判定False不過我是英文跟數字都可以 而其他像是~!@#$等等的不行不過isdigit()跟isalpha()跟我設定ord()範圍在數字到英文這樣不行嗎??
作者: Microscft (小軟哥)   2014-05-16 19:58:00
例外的處理 怎麼不用try except?
作者: funnypeter (很難笑,披得)   2014-05-16 20:21:00
將輸入list化再分析黏在一起無法判斷,變list把它們分開,再判斷
作者: ersfw4418 (隱身術)   2014-05-17 03:18:00
我後來查了try except的用法,分別用有else跟沒else各試了一次 有得出成功的結果了:) 另外得出錯誤跳出後再檢查一次的方法也成功了 感謝大大的回答@fun大大 是list有什麼方法可以檢查是否為數字跟英文嗎不然我用字串的編碼[]去跑迴圈測試是否為數字與英文是否會比較慢 不過這樣也能判斷不是嗎?還是我誤會您的意思了?
作者: funnypeter (很難笑,披得)   2014-05-17 08:26:00
喔,都可以阿,你的寫法是比較不pythonic我是給另外一個方式來判斷,程式運作有很多種寫法data=list(data);for I in data;if I.isdigit() or I.isalpha():......else: .....
作者: ersfw4418 (隱身術)   2014-05-17 12:40:00
前面大大有說到isdigit(),isalpha()可以判斷哦 您的意思是一開始就list而不是str就可以個別判斷了pythonic的意思是盡量使用python已有的代碼嗎?因為教授教的時候就說是想教程式設計而不是針對python可能就是這樣我才會不知道很多指令的用法吧Q_Q我是個人對python特別有興趣才去的
作者: uranusjr (←這人是超級笨蛋)   2014-05-17 14:38:00
http://docs.python-guide.org/en/latest/writing/style/Being Pythonic is not a skill; it's style.
作者: Microscft (小軟哥)   2014-05-17 19:42:00
如果不是要開發大型的專案 其實也不用鳥什麼style
作者: ersfw4418 (隱身術)   2014-05-17 23:05:00
感謝感謝 其實我現在大學所學的不太會用到程式語言大概就是導入數據跟計算一些東西跟繪圖所以我想學好基本再看看能不能把scipy numpy matplotlib學起來(其實只是硬要把現在學的跟python扯上關係=_=)

Links booklink

Contact Us: admin [ a t ] ucptt.com