变量及IsFind问题
name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]
IsFind = False
for each in score:
if name in each:
print(name + '的得分是:', each)
IsFind = True
break
if IsFind == False:
print('查找的数据不存在!')
-----------------------
问题1:each这个变量没有赋值,为什么可以直接用 for each in score,以及及each?
问题2:IsFind在这里用了几次,其意义分别表示什么? 1、for each in score 会把 score 的元素迭代出来赋值给 each,
each 就是 score 里面的元素,而 score 里面的元素是列表,所以可以用 score
2、IsFind 是一个标志,用来判断有没有查到指定用户的得分的,
如果查找到就将 IsFind 置为 True,这样后面就不会打印 “查找的数据不存在” 了,
否则 isFind 就为初始值 False,满足后面的条件语句,就会打印 “查找的数据不存在”,
非要说用了多少次,应该说真正算使用的就是判断那次,另外两次都是定义 兄弟,其实可以不用另外设 IsFind,Python 本来就有 for ... else ... 语句。如果 for 完成全部循环(没有经过 break),则执行 else 语句。 name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]
IsFind = False
for each in score:
if name in each:
print(name + '的得分是:', each)
IsFind = True
break
else:
print('查找的数据不存在!') 本帖最后由 isdkz 于 2022-2-28 09:05 编辑
正如楼上大佬所说,python 有 for ... else ... 的特殊语法,就是专门用来实现搜索逻辑的,
else 语句块在 for 语句没有正常循环结束的时候被触发,
所以你可以使用 for... else ...,这时候就没必要使用 标志位 IsFind 了:
name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]
for each in score:
if name in each:
print(name + '的得分是:', each)
break
else:
print('查找的数据不存在!')
else 语句块不止可以在没有正常循环完的时候触发,没有进入for语句块也会触发(即不满足循环条件),
在 effetive python 一书中有这样一条建议:
把 else 块紧跟在整个循环后面,会让人不太容易看出这段代码的意思,所以要避免这样写
所以还是用 标志位 比较合适
页:
[1]