miusa 发表于 2020-3-7 14:54:08

第16课 序列 课后题的2个疑问

1、补写代码,为什么要加入 IsFind 变量?
name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]
IsFind = False      #为什么要引入这个变量?而不是直接在 for 循环中,if 后加 else?

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

我的这种写法,自己运行没有发现问题,不知道是不是有我没发现的bug,请大佬指导:
name = input('请输入待查找的用户名:')
score = [['迷途',85],['黑夜',80],['小布丁',65],['福禄娃娃',95],['怡静',90]]

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


2、改写sum的问题,为什么 each 不能用 isdigit 判断呢?这里老报错:
tuple1 =
n = 0
sums = 0

for each in tuple1:
if not each.isdigit():    #错误提示:'int' object has no attribute 'isdigit'
      continue
    else:
      sums = sums + tuple1
      n += 1

qiuyouzhi 发表于 2020-3-7 15:02:08

1,isFind用于标记是否被找到。
2,那是字符串的方法,不是int的

jackz007 发表于 2020-3-7 15:05:33

本帖最后由 jackz007 于 2020-3-7 15:11 编辑

for each in score:
    if name in each:
      print(name + '的得分是:' , each)
      break
    else:
      print('查找的数据不存在!')
      Break
      你的代码确实有大 BUG !
      判断用户名存在可以在循环内解决,但是,判断用户名不存在却不能在循环内解决,必须是在枚举、查询过列表中所有的用户名之后,也就是循环完以后才能下结论。
f = False
for each in score:
    if name in each:
      print(name + '的得分是:' , each)
      f = True
      break
if not f:
      print('查找的数据不存在!')

miusa 发表于 2020-3-7 15:16:43

jackz007 发表于 2020-3-7 15:05
你的代码确实有大 BUG !
      判断用户名存在可以在循环内解决,但是,判断用户名不存在却 ...

懂了!感谢大神!
第二个问题呢……

zltzlt 发表于 2020-3-7 15:18:10

miusa 发表于 2020-3-7 15:16
懂了!感谢大神!
第二个问题呢……

只有字符串有 isdigit() 方法

miusa 发表于 2020-3-7 15:20:12

qiuyouzhi 发表于 2020-3-7 15:02
1,isFind用于标记是否被找到。
2,那是字符串的方法,不是int的

第二还是有点不太明白,isdigit()是只能用于序列么?tuple里的元素,是str 还是 int?单个元素只能用type判断么

zltzlt 发表于 2020-3-7 15:21:52

miusa 发表于 2020-3-7 15:20
第二还是有点不太明白,isdigit()是只能用于序列么?tuple里的元素,是str 还是 int?单个元素只能用type ...

只有字符串有 isdigit() 。

>>> '1'.isdigit()
True
>>> 1.isdigit()
SyntaxError: invalid syntax
>>> .isdigit()
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
    .isdigit()
AttributeError: 'list' object has no attribute 'isdigit'

qiuyouzhi 发表于 2020-3-7 15:23:00

miusa 发表于 2020-3-7 15:20
第二还是有点不太明白,isdigit()是只能用于序列么?tuple里的元素,是str 还是 int?单个元素只能用type ...

不是,只能用于字符串,就是有引号的

miusa 发表于 2020-3-7 15:26:58

zltzlt 发表于 2020-3-7 15:21
只有字符串有 isdigit() 。

懂了,感谢大佬~

miusa 发表于 2020-3-7 15:28:09

qiuyouzhi 发表于 2020-3-7 15:23
不是,只能用于字符串,就是有引号的

明白了,感谢~(我第二次感叹为什么论坛只能设一个最佳答案)

昵称加载错误 发表于 2020-3-7 15:40:46

str.isdigit()方法只能判断字符串中的内容是否为纯数字,如果你想用这个方法的话,可以把第6行代码改为if not str(each).isdigit():,将数字改为字符串就可以用.isdigit()方法了
页: [1]
查看完整版本: 第16课 序列 课后题的2个疑问