这几串代码中break的作用不是很清楚
current_users=['a1','A2','a3','D4','a5']new_users=['a1','b2','c3','d4','E5']
for new_user in new_users:
for current_user in current_users:
if new_user.lower()==current_user.lower():
print(new_user+" has already been used")
print("please input new username")
break
elif current_user=='a5':
print(new_user+" is not being used")
这里break的作用不是很清楚,我如果把break删除,就会比break存在的时候多两句打印结果:a1 is not being used和 d4 is not being used
但是a1和d4 这两个应该在if中打印。为什么少了break就会多出这两个呢????有朋友知道我在说什么吗???
有两个for循环,若if条件匹配成功则break出current_user的for循环,除开break的话if条件匹配成功后还会继续往下,没有跳出去,执行到elif条件打印,发现a1和d4都是if条件匹配成功的吗,这俩本该跳出去的但没有 monkey-D 发表于 2021-9-4 21:35
有两个for循环,若if条件匹配成功则break出current_user的for循环,除开break的话if条件匹配成功后还会继续 ...
这里运用了两次for循环,应该是如果new_user.lower()与current_user.lower()一一对应相等,就执行if,即打印第一个print中的new_user,如果不对应相等,例如A2不等于b2,就执行elif,即b2 is not being used。
不过我还是没听懂您说的关于break的解释,您能再解释一下吗?? 本帖最后由 小伤口 于 2021-9-5 00:38 编辑
两个for循环的执行顺序是
new_users-'a1'---------》current_users=['a1','A2','a3','D4','a5']
new_users-'b2'---------》current_users=['a1','A2','a3','D4','a5']
........
换句话说就是两个for循环的意义就是让两个列表的每个值都能互相进行一次比对
------------------------------------------------------------------------
if new_user.lower()==current_user.lower():
含义就是如果两个列表的值有相同的就执行下面的语句
------------------------------------------------------------------------
break
终止最近的循环也就是
for current_user in current_users:
这层的循环
但是最外面的for循环依旧还会执行
--------------------------------------------------------------------------
小伤口 发表于 2021-9-5 00:36
两个for循环的执行顺序是
换句话说就是两个for循环的意义就是让两个列表的每个值都能互相进行一次比对
有点懂了,我再研究研究{:10_282:} 程序的逻辑是如果对比过程中有重复就会直接提示并跳出循环(已经重复了,后面没必要对比了,也是break的作用),只有一直没重复的才能一直对比到a5(这是已有用户名的最后一个),如果你删除了break,程序对比发现重复的只会提示而不会跳出循环,也会一直对比到a5,所以也会提示没有重复。
如果依旧无法理解建议在if前面打个断点单步执行观察程序执行的过程方面理解~ LeonardCohenX 发表于 2021-9-4 21:43
这里运用了两次for循环,应该是如果new_user.lower()与current_user.lower()一一对应相等,就执行if,即 ...
刚懂了 这里break的作用是防止重复循环,例如a1在if语句中,此时有break,所以此时即使a1满足下面的elif条件,也不会再在elif模块中打印了
才想明白,感谢{:10_305:} LeonardCohenX 发表于 2021-9-5 10:56
这里break的作用是防止重复循环,例如a1在if语句中,此时有break,所以此时即使a1满足下面的elif条件,也不 ...
这里break的作用是防止重复循环,例如a1在if语句中,已经满足if模块,所以会在if模块中打印,此时有break,所以此时即使a1满足下面的elif条件,也不会再在elif模块中打印了
页:
[1]