鱼C论坛

 找回密码
 立即注册
查看: 2159|回复: 3

[已解决]求大佬看看我这个python第二十讲动动手0作业问题在哪

[复制链接]
发表于 2020-12-5 11:22:41 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 甲鱼飞鱼 于 2020-12-5 11:22 编辑

#统计字符串中各种符号出现的次数,并且找出小甲鱼送的一句话。
str0 = '~!@#$%^&*()_-+=[{]}\|/'
line =[]

f = open(r'C:\Users\Administrator\Downloads\string1\string1.txt',encoding = 'utf-8')
def str_count(str_name, one_str):
   '用于统计长字符串中某个字符出现的次数'
    str1_count = str_name.count('one_str')#此处开始出错。
    return print('%s字符出现的次数为:%d'%(one_str,str1_count))
for one_str in str0:
    str_count(f, one_str)
   
for each in f:
    if each not in str0:
        line.append(each)        
print('小甲鱼送的一句话是:',line)
f.close()
最佳答案
2020-12-5 16:16:05
① 你的str0是错的,文件中没有~符号
可以用这个代码找出文件中包含的单个字符串:
# f = open(r'文件路径', encoding='utf-8')
var_list = list(set(f.read()))
for var in var_list:
    if var == '\n':
        continue
    else:
        print(var, end='')

② str_count()函数中传入的f只是打开了,没有读取,所以错的地方应该是:
str1_count = str_name.read().count(one_str)

③ 修改之后可以正常运行,但是统计各个符号出现次数为0,是因为第一次循环知道了文件末尾,所以每次循环之后要用seek()方法把指针放到文件开头

④ 然后就是找出小污龟的话,可以把第一步中取出的str0中的字母去掉,然后用你第二个循环把不在str0中的字符加入到列表,代码如下:
for each in f.read():
    if each != '\n':
        if each not in str0:
            line.append(each)        
print('小甲鱼送的一句话是:',line)

⑤ 整个代码如下:
str0 = 'G_O)+}K({@*LD&[^CU!$]%#'
line =[]
# f = open(r'文件路径', encoding='utf-8')


def str_count(str_name, one_str):
    '用于统计长字符串中某个字符出现的次数'
    str1_count = str_name.read().count(one_str) # 此处开始出错。
    print('%s字符出现的次数为:%d'%(one_str, str1_count))

    
for one_str in str0:
    str_count(f, one_str)
    f.seek(0, 0)
   
str0 = '_)+}({@*&[^!$]%#'
for each in f.read():
    if each != '\n':
        if each not in str0:
            line.append(each)        
print('小甲鱼送的一句话是:',line)


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

使用道具 举报

发表于 2020-12-5 16:16:05 | 显示全部楼层    本楼为最佳答案   
① 你的str0是错的,文件中没有~符号
可以用这个代码找出文件中包含的单个字符串:
# f = open(r'文件路径', encoding='utf-8')
var_list = list(set(f.read()))
for var in var_list:
    if var == '\n':
        continue
    else:
        print(var, end='')

② str_count()函数中传入的f只是打开了,没有读取,所以错的地方应该是:
str1_count = str_name.read().count(one_str)

③ 修改之后可以正常运行,但是统计各个符号出现次数为0,是因为第一次循环知道了文件末尾,所以每次循环之后要用seek()方法把指针放到文件开头

④ 然后就是找出小污龟的话,可以把第一步中取出的str0中的字母去掉,然后用你第二个循环把不在str0中的字符加入到列表,代码如下:
for each in f.read():
    if each != '\n':
        if each not in str0:
            line.append(each)        
print('小甲鱼送的一句话是:',line)

⑤ 整个代码如下:
str0 = 'G_O)+}K({@*LD&[^CU!$]%#'
line =[]
# f = open(r'文件路径', encoding='utf-8')


def str_count(str_name, one_str):
    '用于统计长字符串中某个字符出现的次数'
    str1_count = str_name.read().count(one_str) # 此处开始出错。
    print('%s字符出现的次数为:%d'%(one_str, str1_count))

    
for one_str in str0:
    str_count(f, one_str)
    f.seek(0, 0)
   
str0 = '_)+}({@*&[^!$]%#'
for each in f.read():
    if each != '\n':
        if each not in str0:
            line.append(each)        
print('小甲鱼送的一句话是:',line)


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

使用道具 举报

 楼主| 发表于 2020-12-6 10:14:10 | 显示全部楼层
太阳总会升起 发表于 2020-12-5 16:16
① 你的str0是错的,文件中没有~符号
可以用这个代码找出文件中包含的单个字符串:

多谢大佬解答,不甚感激,明白了许多错误之处,帮助真的很大。辛苦!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-6 14:24:55 | 显示全部楼层
甲鱼飞鱼 发表于 2020-12-6 10:14
多谢大佬解答,不甚感激,明白了许多错误之处,帮助真的很大。辛苦!!!

嘿嘿,一起加油啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 06:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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