鱼C论坛

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

[已解决]python第20讲 动动手第一题

[复制链接]
发表于 2021-1-13 14:13:02 | 显示全部楼层 |阅读模式

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

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

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)

打印出来的结果是:
% 6104
$ 6046
@ 6157
_ 6112
^ 6030
# 6115
) 6186
& 6043
! 6079
+ 6066
] 6152
* 6034
} 6105
[ 6108
( 6154
{ 6046
\n 1219
G 1
O 2
D 1
L 1
U 1
C 1
K 1
我的疑问是比如%出现了6104次, 打印的不是不是应该打印6104次么,为什么是 一个%,后面跟个6104这个数字,难道不是应该 6104个 %,后面跟个6104个数字么

最佳答案
2021-1-13 14:57:52
妙脆角 发表于 2021-1-13 14:53
我就是想知道遍历的过程为什么不打印字符了


你所说的遍历(计数)的过程是在count函数内部完成的
在你控制的循环遍历(for)中,
只对新出现的字符进行了计数并加入列表存储
而已经计数过的,都被if语句给pass了
QQ图片20210113140805.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-13 14:17:06 | 显示全部楼层
print(each, str1.count(each))
这里,each是字符
后面count出来的是次数
结果当然是你说的那种格式了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-13 14:19:50 | 显示全部楼层
昨非 发表于 2021-1-13 14:17
print(each, str1.count(each))
这里,each是字符
后面count出来的是次数

比如说%,他遍历了6104个%,不应该打印6104个% 么,为什么只打印了1个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 14:21:07 | 显示全部楼层
.count()方法返回的是该元素出现的次数,类型是int
  1. >>> string = 'abbcccdddd'
  2. >>> string.count('a')
  3. 1
  4. >>> string.count('b')
  5. 2
  6. >>> string.count('c')
  7. 3
  8. >>> string.count('d')
  9. 4
  10. >>> type(string.count('d'))
  11. <class 'int'>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 14:21:37 | 显示全部楼层
妙脆角 发表于 2021-1-13 14:19
比如说%,他遍历了6104个%,不应该打印6104个% 么,为什么只打印了1个

遍历的过程只改变了str.count的值
并不打印字符
真正打印字符的只有最后一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 14:28:24 | 显示全部楼层
本帖最后由 jackz007 于 2021-1-13 14:37 编辑
  1.             print(each, str1.count(each))
复制代码

        打印出来的信息应该 "长" 什么样由上面这条语句决定。
        这个 print() 先打印 each,就是被统计的字符,然后是一个空格(print() 多参数打印时,会自动在各个参数的输出内容之间添加一个空格进行分隔),然后是 str1 . count(each),就是一个数字。
        当然,也可以按你所希望的样子来输出信息,代码就得改动了:
  1. str1 = '''拷贝过来的字符串'''
  2. list1 = []

  3. for each in str1:
  4.     if each not in list1:
  5.         if each == '\n':
  6.             print(str1 . count(each) , '个 \\n')
  7.         else
  8.             print(str1 . count(each) ,  '个' , each)
复制代码

        不过,这样打印出来看上去会很乱,不如原来的那样,十分的整齐,前面是字符,后面是统计个数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-13 14:53:49 | 显示全部楼层
昨非 发表于 2021-1-13 14:21
遍历的过程只改变了str.count的值
并不打印字符
真正打印字符的只有最后一次

我就是想知道遍历的过程为什么不打印字符了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 14:57:52 | 显示全部楼层    本楼为最佳答案   
妙脆角 发表于 2021-1-13 14:53
我就是想知道遍历的过程为什么不打印字符了


你所说的遍历(计数)的过程是在count函数内部完成的
在你控制的循环遍历(for)中,
只对新出现的字符进行了计数并加入列表存储
而已经计数过的,都被if语句给pass了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 11:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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