鱼C论坛

 找回密码
 立即注册
查看: 938|回复: 5

[已解决]python作业求助

[复制链接]
发表于 2020-8-6 19:10:51 | 显示全部楼层 |阅读模式

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

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

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)

那个\\n是什么,为啥我把\\n改成\n结果也一样
最佳答案
2020-8-6 19:54:21
4399king 发表于 2020-8-6 19:34
str1='拷贝过来的字符串
拷贝过来的字符串
拷贝过来的字符串'



为啥不是向上面那样,按理说第一次遇到’拷‘的时候就已经统计了出现次数并打印一次‘拷 3’,那么下一次再轮到第二个‘拷’,就应该又打印一次‘拷 3’。对吗


不对哈,因为每次统计完字符,就会将这个字符加到列表进去,而因为你的 if 判断不在列表内的字符

才开始打印,所以每个字符只打印一次, count 直接统计了这个字符串的所有字符的个数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-6 19:12:48 | 显示全部楼层
本帖最后由 weiter 于 2020-8-6 19:14 编辑

\ 是转义符
\\ 就是用转义符转义转义符,这样是解除 \ 的特殊含义,让 \ 变成可以打印出来的普通字符

\n 是用于输出换行
\\n 是用于输出 \n 这个字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-6 19:12:59 | 显示全部楼层
本帖最后由 Twilight6 于 2020-8-6 19:16 编辑


结果一样是因为你测试的字符串没有多行字符,所以没有 \n 字符

只要你的字符串大于 1 行,那么结果一定不一样的,\\n 是将 \ 转义了,才能使得 \n 成功打印

也就是因为 each 循环到换行符  \n  的时候,我们直接打印 each 会导致换行,所以统计 \n 换行符时候要将这个字符单独 if 判断并列出打印

需要转义后才能成功打印出 \n ,如果没转义,那么是个换行的效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-6 19:34:44 | 显示全部楼层
Twilight6 发表于 2020-8-6 19:12
结果一样是因为你测试的字符串没有多行字符,所以没有 \n 字符

只要你的字符串大于 1 行,那么结果一 ...

str1='拷贝过来的字符串
拷贝过来的字符串
拷贝过来的字符串'

为啥结果不是这样:
拷 3
贝 3
过 3
来 3
的 3
字 3
串 3
\n 2
符 3
拷 3
贝 3
过 3
来 3
的 3
字 3
串 3
\n 2
符 3
拷 3
贝 3
过 3
来 3
的 3
字 3
串 3
\n 2
符 3

为啥不是向上面那样,按理说第一次遇到’拷‘的时候就已经统计了出现次数并打印一次‘拷 3’,那么下一次再轮到第二个‘拷’,就应该又打印一次‘拷 3’。对吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-6 19:45:12 | 显示全部楼层
4399king 发表于 2020-8-6 19:34
str1='拷贝过来的字符串
拷贝过来的字符串
拷贝过来的字符串'

不是,因为每打印一次都会把 each 添加到 list1 中,然后下次判断 each 在不在 list1 中,如果存在于 list1 就代表这个元素已经打印过了,就不再打印了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-6 19:54:21 | 显示全部楼层    本楼为最佳答案   
4399king 发表于 2020-8-6 19:34
str1='拷贝过来的字符串
拷贝过来的字符串
拷贝过来的字符串'



为啥不是向上面那样,按理说第一次遇到’拷‘的时候就已经统计了出现次数并打印一次‘拷 3’,那么下一次再轮到第二个‘拷’,就应该又打印一次‘拷 3’。对吗


不对哈,因为每次统计完字符,就会将这个字符加到列表进去,而因为你的 if 判断不在列表内的字符

才开始打印,所以每个字符只打印一次, count 直接统计了这个字符串的所有字符的个数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 14:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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