今天又起雾了 发表于 2020-7-18 15:37:09

16讲序列课后题

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

麻烦大佬解释一下这道题。

zltzlt 发表于 2020-7-18 15:37:53

请见:https://fishc.com.cn/forum.php?mod=viewthread&tid=54433

PS:善用论坛的【搜索】功能

今天又起雾了 发表于 2020-7-18 15:39:42

name= input("请输入查找的用户名")
score = [['迷途',85],['黑夜',80]]

for each in score:
    if name == each:
      print(name + "的得分是:",each)
      
if name != each:
    print("查找的数据不存在")
我写的好像也对。但是后面这个if name != each 写的好像有点问题,不过。输出的结果为啥是对的

zltzlt 发表于 2020-7-18 15:42:09

今天又起雾了 发表于 2020-7-18 15:39
name= input("请输入查找的用户名")
score = [['迷途',85],['黑夜',80]]



因为你这个 score 列表只有两个元素,如果元素再多一点的话输出结果就不对了

Twilight6 发表于 2020-7-18 15:42:46



看注释:

name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]
IsFind = False   # 初始化数据为 False ,未找到

for each in score:   # 循环查找 score 列表,查看所输入的字符是否在列表中
    if name in each:    # 如果在列表中就执行 if 下面的代码块
      print(name + '的得分是:', each)
      IsFind = True# 如果执行了 if 说明已经找到了,那么此时将 IsFind 设置为 True 说明已找到
      break

if IsFind == False:   # 若 IsFind = True 说明已经找到,就不打印,反之就打印
    print('查找的数据不存在!')

Twilight6 发表于 2020-7-18 15:52:02

今天又起雾了 发表于 2020-7-18 15:39
name= input("请输入查找的用户名")
score = [['迷途',85],['黑夜',80]]





但是后面这个if name != each 写的好像有点问题,不过。输出的结果为啥是对的

不会正确呀,你输入黑夜可以拿去判断,因为 each 循环结束永远等于 for 循环的最后一个元素

而你输入迷途就会发现多打印了一次查找的数据不存在

i 的 for 循环每次结束都会使得 each 停留在列表里的最后一个元素 each = ['黑夜',80]



今天又起雾了 发表于 2020-7-18 15:55:21

谢谢各位大佬
页: [1]
查看完整版本: 16讲序列课后题