鱼C论坛

 找回密码
 立即注册
查看: 626|回复: 7

[已解决]python零基础20讲,动动手第一题

[复制链接]
发表于 2018-7-25 23:49:31 | 显示全部楼层 |阅读模式

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

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

x
求大神解释一下,那个循环是怎么进行统计的,突然看的有点懵逼
str1='''复制字符串'''
for each in str1:
    if each not in list1:
        if each == '\n':
            print('\\n', str1.count(each))
        else:
            print(each, str1.count(each))
我自己觉得当列表把所有的字符串类别收集完后第一个if语句就会判断为假,就不会再进行条件内循环了,求大神解答。
最佳答案
2018-7-26 13:07:21
yandong668 发表于 2018-7-26 08:08
所以看得有点懵逼

我的回复被审查,回去看看 #4 帖。
因为 list1 一开始是空的,所以任何在 str1 里的元素对 list 而言都是新的。
每循环一次,就检查现在 str1 被指向的元素是不是没有被 list 记录过。
if each not in list1:each(目前代表 str1 的其中一个元素)如果不在 list1 内,才执行接下来的程序,也就是说如果没有记录,那现在去登记的意思。

另外,您的代码要注意, 是 list 还是 list1 请统一,不然会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-25 23:54:24 From FishC Mobile | 显示全部楼层
对呀,所有字符都有了不就完成了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 23:55:12 | 显示全部楼层
for each in str1:
if each not in list1:

一个是str1 一个是list1 。还有,你list1何在?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 00:09:10 | 显示全部楼层
str1='''复制字符串'''             ## 这是您想要统计的字串
for each in str1:                  ## 让 each 在 str1 里
    if each not in list1:          ## 如果 each 不再 list1 里
        if each == '\n':           ## 如果 each 是回车
            print('\\n', str1.count(each))       ## 打印回车, 并且数 each 在 str1 内,现在所代表的字符
        else:                                            ## 如果 each 不是回车则
            print(each, str1.count(each))      ## 打印 each 目前所代表的字符与其被统计的数

count 是一个函数,用来数东西
如果不明白为什么能够把每个字符给统计出来,您应该先去了解 for each in str1 是什么意思。
each 只是一个暂时的代号,一次代表一个元素。每跑完一圈,就代表第二个元素,以此类推,直到列表没有任何元素为止。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 00:20:58 | 显示全部楼层
你的问题里少了list1 = []
题的答案里有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-26 08:07:36 | 显示全部楼层
ba21 发表于 2018-7-25 23:55
for each in str1:
if each not in list1:

写错了
str1='''复制字符串'''
list = []
for each in str1:
    if each not in list1:
        if each == '\n':
            print('\\n', str1.count(each))
        else:
            print(each, str1.count(each))
整个程序应该是这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-26 08:08:42 | 显示全部楼层
冬雪雪冬 发表于 2018-7-25 23:54
对呀,所有字符都有了不就完成了吗

所以看得有点懵逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 13:07:21 | 显示全部楼层    本楼为最佳答案   
yandong668 发表于 2018-7-26 08:08
所以看得有点懵逼

我的回复被审查,回去看看 #4 帖。
因为 list1 一开始是空的,所以任何在 str1 里的元素对 list 而言都是新的。
每循环一次,就检查现在 str1 被指向的元素是不是没有被 list 记录过。
if each not in list1:each(目前代表 str1 的其中一个元素)如果不在 list1 内,才执行接下来的程序,也就是说如果没有记录,那现在去登记的意思。

另外,您的代码要注意, 是 list 还是 list1 请统一,不然会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 20:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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