20课动动手01
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出现的次数? 对呀,根据你的理解,str1里面就没有重复的字嘛,所以可以循环输出啊 newu 发表于 2019-7-4 00:07
对呀,根据你的理解,str1里面就没有重复的字嘛,所以可以循环输出啊
作业里面有啊,那个下载下来的txt里面,比如找到了第一个%给他append进list1[]去了,然后又找到了%,然后走到(if each not in list1:)这里,可是之前不是append进去了么,应该不满足这个if语句啊,所以下面的语句是怎么执行的啊? 因为第一次遇到的字符被count返回的结果是整个字符串中这个字符出现的次数,在遇到相同的字符就跳过了,也没必要再count一次。 那个if如果成立不会被执行,但是for循环依旧会执行啊 你在这一句下面加一个打印,观察下结果是怎么产生的
list1.append(each)
print(list1) 这个作业为什么都要鱼币 本帖最后由 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里面没有重复的字符,所以你描述的问题从何谈起呢? 根据你的代码,随便给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啊 chengduyangge 发表于 2019-7-4 11:53
楼上各位可能没有明白楼主的意思,当然我也不一定明白
说说我对楼主描述的理解:
我的意思就是2和3 新手·ing 发表于 2019-7-4 07:26
因为第一次遇到的字符被count返回的结果是整个字符串中这个字符出现的次数,在遇到相同的字符就跳过了,也 ...
我好像有点明白了,我如果想实现把统计的结果降序排列,该输入什么代码实现,请指教。 大野兔仙 发表于 2019-7-4 23:12
我好像有点明白了,我如果想实现把统计的结果降序排列,该输入什么代码实现,请指教。
print(sorted(list1, reverse=True)) 里面的print('\\n',str1.count(each))打印出来为什么不是\n,而是一个空格??
页:
[1]