关于自己在if, else, for循环下break的问题
2020-01-14 02:38
113 查看
最近在写一个判断变量名是否合法的代码,代码中出现了这样一个问题。先把出问题的代码贴在下面:
i = 1 while True: s = input('请输入变量') #想实现一直输入一直在while中执行,则必须在while语句内写这一句 if s[0] != '_' and s[0].isalpha() != True: print('第一个字符就不对') #此处加入break则跳出整个while循环,因为while相当于是此处break的第一层循环 else: for i in range(1,len(s)): if s[i] != '_' and s[i].isalpha() != True and s[i].isalnum() != True: print('第一个字符对但变量不对') break #这里的break左移了一个tab之后就不行了,就无法在变量正确的时候输出 “对了” 两个字 ,为什么?? else: print('对了')
问题就出在最后一个break上,在这里,我们可以看到,break和for循环中的 if 平级。一旦执行,当输入合法变量时,并没有按照我预想的那样输出 “对了” 这两个字。
当我把那个break 右移一个tab时,就能够输出 “对了” 这两个字。
为什么呢?
我自己写了一段测试程序,代码如下:
s = input('请输入s: ') for i in range(1,len(s)): if s[i] != '_' and s[i].isalpha() != True and s[i].isalnum() != True: print(str(i)) print('第一个字符对但变量不对') break print('执行到了break')
当我输入 ddddd 时,执行结果为:
请输入s: ddddd 执行到了break
首先,输入字符 ddddd 是不符合 if 语句中的判断条件的,那么,接下来的两个print也不会执行,直接执行break,跳出for循环,执行和for循环平级的 “ print(‘执行到了break’) ” 语句,因此会输出 “执行到了break” 这一句话。
后来发现,当我执行程序,输入字符串 “kk,,”时,没有起到我想要的效果,执行结果是这样:
请输入s: kk.. 执行到了break
因为,只要有不满足 if 语句的字符,就直接无情执行break,跳出for循环,执行最后一句话,也就是 “print(‘执行到了break’) ” 这一句。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- JavaScript if...Else 语句、switch 语句、For 循环、while 循环、 Break 和 Continue 语句
- [置顶] 循环语句if(){}else{}、if(){}else if(){}...else{}、do{}while()、for(){}、with(){}break/continue语句
- Python基础(条件判断和循环) if elif else for while break continue;
- 一道关于for循环于if-else题
- 问题:关于for index 循环
- 关于python中的if-elif-else格式的问题
- 关于break在多层for里面printf的输出问题
- python_for_while+if_else+break_continue
- python for循环if-else使用技巧
- 关于click/onclick事件中函数与for循环的执行机制问题
- 关于for循环和while循环中的次数问题
- 关于arcpy中的Cursor,for循环问题
- 多重循环的退出问题 if-break
- 关于for的循环语句的问题
- python基础语法之if,else,for,while,continue,break
- 关于在DELPHI中FOR循环语句的使用问题
- 关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
- Python的for和break循环结构中使用else语句的技巧
- 关于for循环中,定义的i的作用域的问题。
- python学习笔记十(if-elif-else语句、else语句、for语句、break语句、continue语句)