[问题] 关于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