鱼C论坛

 找回密码
 立即注册
查看: 2400|回复: 13

[已解决]20讲动动手第1题还是有点小疑问

[复制链接]
发表于 2020-11-14 16:42:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看了论坛里的关于这题的解答,还是有点疑问

1      str1 = '''拷贝过来的字符串'''
2      list1 = []

3      for each in str1:
4          if each not in list1:
5              if each == '\n':
6                  print('\\n', str1.count(each))
7              else:
8                  print(each, str1.count(each))
9              list1.append(each)

根据答案,第3句的each可以理解为str1里的任一字符a,第4句里a如果不在列表list1里的话,执行下面的语句,打印字符和对应的字符数,同时a这个字符进入list1列表。问题是当第2个a出现的时候,我称之为a2,这时a2就不符合第4句的命令,list1里面已经有a了,应该不执行第4句if及其嵌套的命令,而应该执行同级else的命令,但是答案里面并没有给出,不知道我这个理解错误在哪里?希望大师指点
最佳答案
2020-11-15 20:48:16
应该count函数理解有误吧
count(str, beg= 0,end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

也就是重复的时候,下面的代码都不执行,当出现新的,统计新的

但是:每次统计并不是只统计读取到的位置,而是全部
例如:
str1="abcdeeefffffee"

for i in str1:
    if i=='e':    
        print(str1.count('e'))
        break
这里,遇到第一个e的时候统计e,就已经统计完所有的e了,

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-15 19:38:24 | 显示全部楼层
是不是这个问题太low了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 20:29:32 | 显示全部楼层
寒暄371 发表于 2020-11-15 19:38
是不是这个问题太low了?

刚看到哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 20:48:16 | 显示全部楼层    本楼为最佳答案   
应该count函数理解有误吧
count(str, beg= 0,end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

也就是重复的时候,下面的代码都不执行,当出现新的,统计新的

但是:每次统计并不是只统计读取到的位置,而是全部
例如:
str1="abcdeeefffffee"

for i in str1:
    if i=='e':    
        print(str1.count('e'))
        break
这里,遇到第一个e的时候统计e,就已经统计完所有的e了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 20:49:27 | 显示全部楼层
本帖最后由 昨非 于 2020-11-15 20:50 编辑

补充:if语句如果同级没有else时,相当于啥也不干的。
并不是每个if都需要else与之对应的,省略不写时,程序只执行if部分,不满足if条件,自动逃过当前循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 21:10:09 | 显示全部楼层
满意的话记得给个最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-15 21:28:05 | 显示全部楼层
昨非 发表于 2020-11-15 20:48
应该count函数理解有误吧
count(str, beg= 0,end=len(string))
返回 str 在 string 里面出现的次数,如果 ...

多谢指导,可能我没把问题表述清楚,我对两个count的作用是理解的

我不明白的是当第一个字符a在第9句已经计入list1,之后当同样的字符a第二、第三次再次出现,然后被第4句判断不符合逻辑,那么不就不应该执行下面的语句了么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 21:32:52 | 显示全部楼层
寒暄371 发表于 2020-11-15 21:28
多谢指导,可能我没把问题表述清楚,我对两个count的作用是理解的

我不明白的是当第一个字符a在第9句 ...

对呀,不执行了,但是会进行下次循环,读取下一位字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 21:40:38 | 显示全部楼层
帖子结一下吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-15 21:51:40 | 显示全部楼层
昨非 发表于 2020-11-15 21:32
对呀,不执行了,但是会进行下次循环,读取下一位字符

难道是执行第一个字符a的时候,count就把整个字符串里面的a都统计完毕了么?如果是这样的话,我突然明白你4楼那个例子的意思了,多谢指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-15 21:52:54 | 显示全部楼层
本帖最后由 寒暄371 于 2020-11-15 21:54 编辑
昨非 发表于 2020-11-15 21:32
对呀,不执行了,但是会进行下次循环,读取下一位字符


可是只判断第一个字符a后,count是怎么把整个字符串的a都统计出来的呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 21:53:14 | 显示全部楼层
寒暄371 发表于 2020-11-15 21:51
难道是执行第一个字符a的时候,count就把整个字符串里面的a都统计完毕了么?如果是这样的话,我突然明白 ...

就是这个意思啊,我四楼还举了例子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-15 21:58:46 | 显示全部楼层
昨非 发表于 2020-11-15 21:53
就是这个意思啊,我四楼还举了例子

我思维还停留在读取一个字符,判断是否在list1,在的话,循环同时不执行下面的语句,也就是count不能加1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 22:02:11 | 显示全部楼层
寒暄371 发表于 2020-11-15 21:58
我思维还停留在读取一个字符,判断是否在list1,在的话,循环同时不执行下面的语句,也就是count不能加1

理解了就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表