第16讲课后习题的一个问题
name = input('请输入带查找的用户名:')score = [['迷途',85],['黑夜',88],['小布丁',65],['福禄娃娃',95],['怡静',90]]
for each in score:
if name in each:
print(name + '得分是' ,each)
break
if name not in each:
print("查找的数据不存在")
上面是程序,关于这个break我有点小问题,我个人理解是不需要break的,但删除break的时候会显示下面这样
请输入带查找的用户名:迷途
迷途得分是 85
查找的数据不存在
break不是跳出的是for循环嘛?为什么会影响到执行下面的if语句
本帖最后由 heidern0612 于 2020-3-30 15:46 编辑
这段代码的意思是,东西已经找到了,就跳出循环吧。
不break的话,是不是假如东西我已经找到了,我还得继续找下去?
假如我for循环了个遍,each是不是就指代for循环的最后一位序列,名存实亡了?
可以打印一下each:
for each in score:
if name in each:
print(name + '得分是' ,each)
#break
print(each)
if name not in each:
print("查找的数据不存在")
会发现,如果删掉break,each就会等于
列表最后一个元素(for循环会继续遍历)
这时候,加入break,就可以让each保留
在正确的状态。 利用循环指定了each的值
删了,each最终肯定是score中的最后那个 来看看大神们回复 本帖最后由 jackz007 于 2020-3-30 15:53 编辑
楼主的代码似乎这样写才对
name = input('请输入带查找的用户名:')
score = [['迷途',85],['黑夜',88],['小布丁',65],['福禄娃娃',95],['怡静',90]]
for each in score:
if name in each:
print(name + '得分是' , each)
break
else : print("查找的数据不存在")
如果找到就打印信息,并 break 退出循环,如果循环过程不曾被 break 语句打断,那就执行 for 循环的 else 语句,打印没找到信息。这样,代码逻辑是一体的,可以避免两头判断给代码逻辑增加的复杂度。
懂了,谢谢各位大佬
页:
[1]