人zai旅途 发表于 2016-11-1 23:18:41

16讲 课后题4,--IsFind = False是什么意思?

4. 哎呀呀,现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图案,麻烦各位鱼油恢复下啊,另外这家伙画的是神马吗?怎么那么眼熟啊!??
http://xxx.fishc.com/forum/201312/14/212245ym3vtjyv1m10njmg.png


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('查找的数据不存在!')



IsFind = False是什么意思?

冬雪雪冬 发表于 2016-11-2 08:46:40

是一个标志flag,预设值为False,当找到名字后,改为True,最后判断是否为False。当然也可不用这个标识,简化为:

name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]


for each in score:
    if name in each:
      print(name + '的得分是:', each)
      IsFind = True
      break
else:
    print('查找的数据不存在!')

人zai旅途 发表于 2016-11-2 23:49:47

本帖最后由 人zai旅途 于 2016-11-3 00:06 编辑

冬雪雪冬 发表于 2016-11-2 08:46
是一个标志flag,预设值为False,当找到名字后,改为True,最后判断是否为False。当然也可不用这个标识,简 ...

谢谢大神,这个标识也可以不要

name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]


for each in score:
    if name in each:
      print(name + '的得分是:', each)
      break
else:
    print('查找的数据不存在!')


最后,这个else可以单独用吗?不用必须和if 成对出现吗?这个例子中,是和for循环里面的条件对应的吗?
这个else是for 循环终止以外的情况触发,还是遍历所有条件才触发?

name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]


for each in score:
    if name in each:
      print(name + '的得分是:', each)
#      break
else:
    print('查找的数据不存在!')


输出结果是
请输入待查找的用户名:小布丁
小布丁的得分是: 65
查找的数据不存在!

也就是这个break跳出循环,也包括else:后面的内容吗?

冬雪雪冬 发表于 2016-11-3 09:22:11

本帖最后由 冬雪雪冬 于 2016-11-3 09:26 编辑

人zai旅途 发表于 2016-11-2 23:49
谢谢大神,这个标识也可以不要




除了if可以有else,while和for也可以带else。
语句的结构是这样的:
while <判断>:
    语句
    ......
    语句
    if <判断>:
      break
    语句
    ......
    语句
else:
    语句
    ......
    语句
当循环正常执行完毕后,运行else的内容,而当break退出循环不执行else的内容。

冬雪雪冬 发表于 2016-11-3 09:33:09

比如程序这样写,就很方便。
i = 0
while i < 3:
    pw = input('请输入密码:')
    if pw == '1234':
      print('密码正确。')
      break
    print('密码错误。')
    i += 1
else:
    print('三次输入错误,退出程序。')
    exit()
print('下面开始程序主体......')

人zai旅途 发表于 2016-11-3 18:44:22

冬雪雪冬 发表于 2016-11-3 09:33
比如程序这样写,就很方便。

谢谢大神回复,这回理解透彻了

2018222030015 发表于 2019-3-6 15:34:06

冬雪雪冬 发表于 2016-11-3 09:33
比如程序这样写,就很方便。

为什么答案错误三次以后就没有输出'三次输入错误,退出程序。',

冬雪雪冬 发表于 2019-3-6 15:50:57

2018222030015 发表于 2019-3-6 15:34
为什么答案错误三次以后就没有输出'三次输入错误,退出程序。',

有的呀。

13724022662 发表于 2019-6-5 14:05:39

大概理解了,但是不明白IsFind从何来的。不是应该赋值name = False吗,用户输入的是给name赋值,这样的话IsFind不是保持着False吗

qq602043708 发表于 2020-2-19 16:33:46

soga~知识get~

Tigeroad 发表于 2020-4-4 14:38:34

13724022662 发表于 2019-6-5 14:05
大概理解了,但是不明白IsFind从何来的。不是应该赋值name = False吗,用户输入的是给name赋值,这样的话IsF ...

输入正确以后,isfind就为True了,不会运行if isfind == Flase:后面的语句。
你可以跟那个大神说的一样,就把isfind当成一个叫做Flag的参数,用来“插旗”标记。

褴褛逻辑 发表于 2020-4-5 22:35:48

name = input('请输入待查找的用户名:')
score = [['迷途',85],['黑夜',80],['小布丁',65],['福禄娃娃',95],['怡静',90]]
for each in score:
    if name in each:
      print(name +'的得分',each)
if name not in (str(score)):
    print('查找的数据不存在')

又跟我的思路一样的吗
老乌龟画的那个图太影响思路了

_2_ 发表于 2020-4-5 23:26:32

冬雪雪冬 发表于 2016-11-2 08:46
是一个标志flag,预设值为False,当找到名字后,改为True,最后判断是否为False。当然也可不用这个标识,简 ...

好久不见了……

冬雪雪冬 发表于 2020-4-7 14:46:17

_2_ 发表于 2020-4-5 23:26
好久不见了……

是的

wmhmiao 发表于 2020-7-20 09:51:27

Tigeroad 发表于 2020-4-4 14:38
输入正确以后,isfind就为True了,不会运行if isfind == Flase:后面的语句。
你可以跟那个大神说的一样 ...

请问 我常识了把第三行和第八行的true false对调。程序还是能运行 是为什么?

name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]
IsFind = True

for each in score:
    if name in each:
      print(name + '的得分是:', each)
      IsFind = False
      break

else:
    print('查找的数据不存在!')

misswonder 发表于 2020-9-5 21:03:15

本帖最后由 misswonder 于 2020-9-5 21:04 编辑

发错地方啦。删掉。

Tigeroad 发表于 2021-7-23 10:08:12

wmhmiao 发表于 2020-7-20 09:51
请问 我常识了把第三行和第八行的true false对调。程序还是能运行 是为什么?

name = input('请输入待 ...

这只是一个标志而已,True,False,甚至任何字符串都可以表示找没找到这个状态,比如:
name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]
flag = 'meizhaodao'#或者flag = Flase,插旗以标识有没有找到

for each in score:
    if name in each:
      print(name + '的得分是:', each)
      flag = 'zhaodaole'#或者flag = True
      break
   
if flag == 'meizhaodao':#或者flag == Flase
    print('查找的数据不存在!')

leito 发表于 2021-12-26 16:03:57

褴褛逻辑 发表于 2020-4-5 22:35
又跟我的思路一样的吗
老乌龟画的那个图太影响思路了

老乌龟那个图到底是啥,一直没看懂

zhaoquan_x 发表于 2023-4-11 10:48:44

if name in each:          85,80,65,95,90不也在each里么?
页: [1]
查看完整版本: 16讲 课后题4,--IsFind = False是什么意思?