|
1鱼币
第一题我是这样写的:
txt = '''黏贴的文本里的字符串'''
#判断各种特殊字符分别在文本中出现的次数
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
#迭代symbols中的每个字符
for each in symbols:
#判断字符是否在txt文件中,如果是,则计算该字符在文本中一共有几个
if each in txt:
num = txt.count(each)
print('字符 %s 在文本当中一共出现了%d 次' % (each,num))
#找出字母并打印
for each2 in txt: #如果这里换成for each2 in letters那么打印出来的字母是按照letters里的排序顺序出现的
if each2 in letters:
print(each2,end = '')
论坛小甲鱼给出的参考答案
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)
实在不明白其中if语句的道理,求达人解释解释!!
另外看看我自己的写法有没有不合理的地方?望指正。
第二题。
我是这样写的:
利用切片来判断字符前后3个位置的字符是否为大写。
txt = '''黏贴的文本字符串'''
length = len(txt)
for i in range(length):
if txt.islower() and txt[(i+1):(i+4)].isupper() and txt[(i-3):(i)].isupper() :
print(txt,end = '')
小甲鱼给出的参考答案:
str1 = '''拷贝过来的字符串'''
countA = 0
countB = 0
countC = 0
length = len(str1)
for i in range(length):
if str1 == '\n':[i]
continue
if str1.isupper():
if countB == 1:
countC += 1
countA = 0
else:
countA += 1
continue
if str1.islower() and countA == 3:
countB = 1
countA = 0
target = i
continue
if str1.islower() and countC == 3:
print(str1[target], end='')
countA = 0
countB = 0
countC = 0
不太明白思路,能否解释一下下。感激不尽。
[/i]
|
最佳答案
查看完整内容
str1 = '''\nhelloworld'''
list1 = []
#这样写主要原因是无法用 print(each, str1.count(each))输出\n
for each in str1:#每一个在str1中的成员
if each not in list1:#每一个在str1但不在list1中的成员
if each == '\n':#如果是\n的话
print('\\n', str1.count(each))#输出\n并输出其在str1中的次数
else:#如果不是\n的话
print(each, str1.count(each))#输出它并输出其在 ...
|