Peteryo01223 发表于 2020-9-22 16:48:37

这个答案,有高手能写个注释么?

题目:
请用已学过的知识编写程序,统计下边这个长字符串中各个字符出现的次数并找到小甲鱼送给大家的一句话。

小甲鱼的答案:
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)

请问:
1. list1 = [] 这是在干嘛呢?
2. \n是换行的意思,为什么要 if each == '\n':?让每一个字符都换行,干嘛用?
3. \\是反斜杠符号,那么\\n 是在做什么呢?

如果有高手帮我写写注释,最好啦。我实在是看不懂这个答案。

昨非 发表于 2020-9-22 18:36:52

str1 = '''拷贝过来的字符串'''
list1 = [] #list1是定义一个空的列表,用于存储小甲鱼给大家的一句话

for each in str1: #遍历str1
    if each not in list1: #如果该字符不在list1内
      if each == '\n': #判断该字符是不是换行符(不是你理解的赋值为\n)
            print('\\n', str1.count(each))#打印出来\n的个数
      else:#否则(该字符不是\n)
            print(each, str1.count(each))#打印出个字符及其出现次数
      list1.append(each)#将字符添加入list1中

昨非 发表于 2020-9-22 18:38:19

反斜杠需要转义才能打印,你可以试试
print("\\n")
print("\n")

Peteryo01223 发表于 2020-9-23 08:30:19

昨非 发表于 2020-9-22 18:36


您的注释太棒了!看了学到很多。

再请问:
1. 为何要判断“字符是不是换行字符”?这个str1是一大串字符,怎么突然要判断起换行的问题来了?
2. print出来的each, 为何能整齐地一个换一行?哪一条程序,设定了这个形态呢?

谢谢谢!

Peteryo01223 发表于 2020-9-23 08:30:55

昨非 发表于 2020-9-22 18:38
反斜杠需要转义才能打印,你可以试试

好的~
页: [1]
查看完整版本: 这个答案,有高手能写个注释么?