鱼C论坛

 找回密码
 立即注册
查看: 1061|回复: 6

[已解决]python20讲课后作业

[复制链接]
发表于 2020-7-5 09:58:56 | 显示全部楼层 |阅读模式

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

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

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)
大佬们,我想请问这个list列表用字这里是要干什么呢,for下面的if语句是说当str1中的字符不存在list1里面时,那么既然list1是空列表,应该不存在这种情况啊
str1 = '''拷贝过来的字符串'''
list1 = []

for each in str1:
    print(each, str1.count(each))
    list1.append(each)
这样的代码输出结果也和上面的一样啊,所以说二者有何差别呢以及这列表放在这里有什么用处呢
最佳答案
2020-7-5 10:03:36
本帖最后由 Twilight6 于 2020-7-5 10:46 编辑




大佬们,我想请问这个list列表用字这里是要干什么呢,for下面的if语句是说当str1中的字符不存在list1里面时,那么既然list1是空列表,应该不存在这种情况啊


循环过程中会循环到相同字符,你第一次循环时候不在列表里,所以 if 里的 list1.append(each) 会将循环过的字符加入列表中作为记录

下一次循环到这个字符就会发现在 列表中了 ,就不在打印这个字符的统计结果

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

for each in str1:
    print(each, str1.count(each))
    list1.append(each)
这样的代码输出结果也和上面的一样啊,所以说二者有何差别呢以及这列表放在这里有什么用处呢


输出结果不同,你的代码会多出个空行,和空行值,是因为 打印  \n 的时候 print 函数以为你要换行,所以帮你换行了,还有重复打印一些字符

而实际上,我们是想要打印 \n 这个字符,而不是想换行,而 \n 想要打印必须转义,所以必须单独 列出一个 if 判断 是否为 \n ,是 \n 时候将 \n 多加个 \ 转义了才能成功打印出 \n 字符,而不是换行


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-5 10:03:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-5 10:46 编辑




大佬们,我想请问这个list列表用字这里是要干什么呢,for下面的if语句是说当str1中的字符不存在list1里面时,那么既然list1是空列表,应该不存在这种情况啊


循环过程中会循环到相同字符,你第一次循环时候不在列表里,所以 if 里的 list1.append(each) 会将循环过的字符加入列表中作为记录

下一次循环到这个字符就会发现在 列表中了 ,就不在打印这个字符的统计结果

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

for each in str1:
    print(each, str1.count(each))
    list1.append(each)
这样的代码输出结果也和上面的一样啊,所以说二者有何差别呢以及这列表放在这里有什么用处呢


输出结果不同,你的代码会多出个空行,和空行值,是因为 打印  \n 的时候 print 函数以为你要换行,所以帮你换行了,还有重复打印一些字符

而实际上,我们是想要打印 \n 这个字符,而不是想换行,而 \n 想要打印必须转义,所以必须单独 列出一个 if 判断 是否为 \n ,是 \n 时候将 \n 多加个 \ 转义了才能成功打印出 \n 字符,而不是换行


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-5 10:41:39 | 显示全部楼层
你把 '''拷贝过来的字符串'''换成别的,其中有重复内容的就发现不同了。如 '''拷贝过来的字符串贝贝'''
甲鱼用list检查筛选掉了重复的字符,而你的就不能,重复的也重复着打印出来了。
if each == '\n':就是判断是否回车键,我们不想以回车的方式打印出来,而希望是以\n表示出来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 10:57:36 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-5 10:58:45 | 显示全部楼层
痒痒它老叔 发表于 2020-7-5 10:41
你把 '''拷贝过来的字符串'''换成别的,其中有重复内容的就发现不同了。如 '''拷贝过来的字符串贝贝'''
甲 ...

明白了谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 10:59:19 | 显示全部楼层
Twilight6 发表于 2020-7-5 10:03
循环过程中会循环到相同字符,你第一次循环时候不在列表里,所以 if 里的 list1.append(each) 会 ...

明白了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-5 11:00:35 | 显示全部楼层

客气了 ~  加油~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 03:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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