Peteryo01223 发表于 2021-1-11 17:13:24

第20课:动动手。给答案加注释

本帖最后由 Peteryo01223 于 2021-1-11 17:28 编辑

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

标准答案,以及我的注释:
str1 = '''拷贝过来的字符串''' # 给string 赋值
list1 = [] # 创建一个空列表

for each in str1: # 开始利用 for 循环
    if each not in list1: # 条件语句,如果 each 不在列表 list1 里面的话
      if each == '\n': # 条件语句,同时符合条件,即:each 是一个换行的情况
            print('\\n', str1.count(each)) # 先通过\的转意,打印出 \n,然后计算并打印出这个each,即:换行,的数量
      else: # 其它情况,则
            print(each, str1.count(each)) # 打印每个each,和相对应的数量
      list1.append(each) #在list1后面,逐一地添加每个each

我的问题:
1. ‘‘‘’’’,三对儿引号联合起来用,是因为本string含有众多可能被python读取的,并且在python中有固定涵义的字符,才使用三对儿引号的,是这样吗?
2. 本程序,首先计算并打印的,就是 \n,即:each 是一个换行的情况。请问,为何结果打印出来时,\n 1219,却是在中间才显示出来的?
3. print(each, str1.count(each)) 这个语句,已经打印了我们需要的结果。那么下一句,即: list1.append(each),创建出一个列表list1,也不做打印的动作,请问有何意义呢?

谢谢~


qiuyouzhi 发表于 2021-1-11 18:06:42

1,不是,三引号是长字符串,可以在字符串里面换行。
这个小甲鱼课上应该讲过。
2,'\\n',最前面的\把后面的\转义了,所以就直接会打印出\n。
3,if each not in list1: # 条件语句,如果 each 不在列表 list1 里面的话
为了这个的判断呀,要是不加进去怎么判断 each 是不是在出现过呢?

Peteryo01223 发表于 2021-1-11 18:15:51

qiuyouzhi 发表于 2021-1-11 18:06
1,不是,三引号是长字符串,可以在字符串里面换行。
这个小甲鱼课上应该讲过。
2,'\\n',最前面的\把后 ...

好的。不过还要请问,第2个问题,为何结果打印出来时,\n 1219,是在中间才显示出来的?按说是第一个判断的它呀。

qiuyouzhi 发表于 2021-1-11 19:11:19

Peteryo01223 发表于 2021-1-11 18:15
好的。不过还要请问,第2个问题,为何结果打印出来时,\n 1219,是在中间才显示出来的?按说是第一个判断 ...

首先判断不代表打印

Peteryo01223 发表于 2021-1-12 08:22:07

qiuyouzhi 发表于 2021-1-11 19:11
首先判断不代表打印

哦,也就是:首先在code中写出来的语句,在实际的 str 中,可能并不首先出现,因此,打印出来的顺序,要看 str 中字符出现的顺序,而定,是吧?

qiuyouzhi 发表于 2021-1-12 18:06:57

Peteryo01223 发表于 2021-1-12 08:22
哦,也就是:首先在code中写出来的语句,在实际的 str 中,可能并不首先出现,因此,打印出来的顺序,要 ...

是的
页: [1]
查看完整版本: 第20课:动动手。给答案加注释