第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
1,isFind用于标记是否被找到。
2,那是字符串的方法,不是int的 本帖最后由 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('查找的数据不存在!') jackz007 发表于 2020-3-7 15:05
你的代码确实有大 BUG !
判断用户名存在可以在循环内解决,但是,判断用户名不存在却 ...
懂了!感谢大神!
第二个问题呢…… miusa 发表于 2020-3-7 15:16
懂了!感谢大神!
第二个问题呢……
只有字符串有 isdigit() 方法 qiuyouzhi 发表于 2020-3-7 15:02
1,isFind用于标记是否被找到。
2,那是字符串的方法,不是int的
第二还是有点不太明白,isdigit()是只能用于序列么?tuple里的元素,是str 还是 int?单个元素只能用type判断么 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' miusa 发表于 2020-3-7 15:20
第二还是有点不太明白,isdigit()是只能用于序列么?tuple里的元素,是str 还是 int?单个元素只能用type ...
不是,只能用于字符串,就是有引号的 zltzlt 发表于 2020-3-7 15:21
只有字符串有 isdigit() 。
懂了,感谢大佬~ qiuyouzhi 发表于 2020-3-7 15:23
不是,只能用于字符串,就是有引号的
明白了,感谢~(我第二次感叹为什么论坛只能设一个最佳答案) str.isdigit()方法只能判断字符串中的内容是否为纯数字,如果你想用这个方法的话,可以把第6行代码改为if not str(each).isdigit():,将数字改为字符串就可以用.isdigit()方法了
页:
[1]