鱼C论坛

 找回密码
 立即注册
查看: 1311|回复: 12

[已解决]20课动动手01

[复制链接]
发表于 2019-7-4 00:01:55 | 显示全部楼层 |阅读模式

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

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

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

for each in str1:
    if each not in list1:
        if each == '\n':
            print('\\n',str1.count(each))
        else:
            print(each,str1.count(each))

        list1.append(each)

最后一行:最开始没在list1里的字符串(首次出现被append倒list1里的字符串)在append回list1里之后,如果再出现重复的if条件语句(if each not in list1)应该不会被执行啊,为什么依然可以执行下去并且可以count出现的次数?
最佳答案
2019-7-5 07:07:52
大野兔仙 发表于 2019-7-4 23:12
我好像有点明白了,我如果想实现把统计的结果降序排列,该输入什么代码实现,请指教。

print(sorted(list1, reverse=True))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-4 00:07:51 | 显示全部楼层
对呀,根据你的理解,str1里面就没有重复的字嘛,所以可以循环输出啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-4 01:37:46 | 显示全部楼层
newu 发表于 2019-7-4 00:07
对呀,根据你的理解,str1里面就没有重复的字嘛,所以可以循环输出啊

作业里面有啊,那个下载下来的txt里面,比如找到了第一个%给他append进list1[]去了,然后又找到了%,然后走到(if each not in list1:)这里,可是之前不是append进去了么,应该不满足这个if语句啊,所以下面的语句是怎么执行的啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-4 07:26:39 | 显示全部楼层
因为第一次遇到的字符被count返回的结果是整个字符串中这个字符出现的次数,在遇到相同的字符就跳过了,也没必要再count一次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-4 10:37:40 | 显示全部楼层
那个if如果成立不会被执行,但是for循环依旧会执行啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-4 11:03:27 | 显示全部楼层
你在这一句下面加一个打印,观察下结果是怎么产生的
list1.append(each)
print(list1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-4 11:31:04 | 显示全部楼层
这个作业为什么都要鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-4 11:53:39 | 显示全部楼层
本帖最后由 chengduyangge 于 2019-7-4 12:00 编辑

楼上各位可能没有明白楼主的意思,当然我也不一定明白

说说我对楼主描述的理解:

1:如果楼主是问为什么循环,那么楼上意见回答了,因为它是一个for循环啊,一定会将str1遍历完之后(无论if判断条件是否满足,也就是和if没啥关系),程序才会终止

2:如果楼主的意思是说,假设str1里面有重复的字符,比如str1 = ‘abcdab’,ab就重复的对吧,那么当执行for循环时,当检测到第二个a的时候,因为不满足if判断条件,所以后面的代码块就不会执行了(根据缩进原则,后面的语句都属于这if的代码块),此时,因为是for循环,程序并没有结束,所以程序又返回来开始遍历第二个a后面的字符,也就是b,此时又发现b又重复了,所以下面的代码块也就不执行了,遍历完成,程序结束

3:还有楼主说出现重复的就不会执行if each not in list1:语句,这个说法是错的,程序会执行这句话,只是因为重复了,不满足条件,然后不执行这个if语句下面的代码块而已

4:楼主的str1里面没有重复的字符,所以你描述的问题从何谈起呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-4 13:41:10 | 显示全部楼层
根据你的代码,随便给str1赋了点值
str1 = '''i love FishC.com.yes i love FishC
you don't love'''
list1 = []
for each in str1:
    if each not in list1:
        if each == '\n':
            print('\\n',str1.count(each))
        else:
            print(each,str1.count(each))
        list1.append(each)

运行结果:
i 4
  7
l 3
o 6
v 3
e 4
F 2
s 3
h 2
C 2
. 2
c 1
m 1
y 2
\n 1
u 1
d 1
n 1
' 1
t 1

没有重复的字符再次出现并引用count啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-4 22:58:59 | 显示全部楼层
chengduyangge 发表于 2019-7-4 11:53
楼上各位可能没有明白楼主的意思,当然我也不一定明白

说说我对楼主描述的理解:

我的意思就是2和3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-4 23:12:04 | 显示全部楼层
新手·ing 发表于 2019-7-4 07:26
因为第一次遇到的字符被count返回的结果是整个字符串中这个字符出现的次数,在遇到相同的字符就跳过了,也 ...

我好像有点明白了,我如果想实现把统计的结果降序排列,该输入什么代码实现,请指教。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-5 07:07:52 | 显示全部楼层    本楼为最佳答案   
大野兔仙 发表于 2019-7-4 23:12
我好像有点明白了,我如果想实现把统计的结果降序排列,该输入什么代码实现,请指教。

print(sorted(list1, reverse=True))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-5 15:39:17 | 显示全部楼层
里面的print('\\n',str1.count(each))打印出来为什么不是\n,而是一个空格??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 22:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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