甲鱼飞鱼 发表于 2020-12-5 11:22:41

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

本帖最后由 甲鱼飞鱼 于 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()

甲鱼飞鱼 发表于 2020-12-6 10:14:10

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



多谢大佬解答,不甚感激,明白了许多错误之处,帮助真的很大。辛苦!!!{:5_106:}

太阳总会升起 发表于 2020-12-6 14:24:55

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

嘿嘿,一起加油啦{:5_108:}
页: [1]
查看完整版本: 求大佬看看我这个python第二十讲动动手0作业问题在哪