求大佬看看我这个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()
① 你的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-5 16:16
① 你的str0是错的,文件中没有~符号
可以用这个代码找出文件中包含的单个字符串:
多谢大佬解答,不甚感激,明白了许多错误之处,帮助真的很大。辛苦!!!{:5_106:} 甲鱼飞鱼 发表于 2020-12-6 10:14
多谢大佬解答,不甚感激,明白了许多错误之处,帮助真的很大。辛苦!!!
嘿嘿,一起加油啦{:5_108:}
页:
[1]