美文网首页
第 8 关、编程思维:如何解决问题

第 8 关、编程思维:如何解决问题

作者: Fade1992 | 来源:发表于2019-12-24 22:22 被阅读0次

1、编程思维


如何解题.png

我们以课程必做练习《学习小组成绩的合并排序》来进行分析:

1-1、练习目标:

我们会通过今天的作业,掌握列表的两个新运用:合并列表和列表排序。

1-2、练习要求:

一次测评中,老师将学习小组A和学习小组B的测评成绩(满分100分)从低到高记录放进两个列表:A=[91,95,97,99],B=[92,93,96,98]。现在,老师有两个需求:
(1)想将两个小组的成绩合并为一个列表,并按照从低到高的顺序排序;
(2)想知道两组的平均分,以及把低于平均分的成绩也打印出来。

1-3、思路分析:

1-3-1、合并列表

  • 首先合并列表,根据所学知识,我们有一个 append()方法,可以给列表添加元素,如果我们用在这道题,直接使用会怎样呢?
A=[91,95,97,99]
B=[92,93,96,98]
A.append(B)
  • 虽然两个列表合并了,但是我们可以发现,列表B是整个作为元素存进了我们的列表A,这并不是我们想要的效果,那么有什么办法把元素一个一个给提出来在放进去呢?提出来,哦,我们想到了我们所学的for循环,遍历取出来后再添加进去
A=[91,95,97,99]
B=[92,93,96,98]
for I inB:
    A.append(i)
print(A)
#结果为:[91,95,97,99,92,93,96,98]
  • 不错,我们运用我们所学的知识成功把两个列表给组合起来,成功完成了第一个小目标,那除了我们所学的知识外,会不会有更简便的方法可以解决呢?这时我们就可以尝试去百度一下了


    百度一下.png
  • 经过百度,我们发现了几种方式可以去解决这个问题:extend()函数、切片、甚至一个“+”号解决:
A=[91,95,97,99]
B=[92,93,96,98]
A.extend(B)
print(A)
A=[91,95,97,99]
B=[92,93,96,98]
A[0:0]=B
print(A)
A=[91,95,97,99]
B=[92,93,96,98]
C=A+B
print(C)
  • 我们可以发现,解决一道题的思路有很多,有时不单单是在课程中的知识点,还有更多的简便方式去处理(不过前期还是建议我们多用课程的知识去解决,好好巩固学牢)
    1-3-2、按照从低到高的顺序排序
  • 高低排序,根据我们所学的知识,好像并没有对应的知识点,而学过其他语言的同学可能了解一个方法:“冒泡排序法”(下面的代码仅提供参考,不强求看懂)
A=[91,95,97,99,92,93,96,98]
for I inrange(len(A)):
    for j in range(0,len(A)-i-1):
    ifA[j]>A[j+1]:
         A[j],A[j+1]=A[j+1],A[j]
print(A)
  • 天啊,看这代码我头发都没了一半,有没有好一点的方法呢?没错,老办法,我们百度一下:、
  • 我们发现了 sort()、sorted()方法
  • 这样,我们就成功完成了我们的第一道题啦~~~

1-3-3、求平均分

  • 进入我们的第二道题,依旧一步一步来,平均分=总分/个数。个数我们可以助教的笔记里找到计算函数len(),而总数的话,我们也可以依次提取列表的元素再进行相加,那我们的代码可以这样写:
  • 没错了,做完了题目后,我们想要少打点代码偷下懒的解决方式就是找更方便的方式去解决问题,翻到助教之前的笔记,我们发现了一个函数sum(),求总和,那太好了,这样就更简单了:

1-3-4、打印低于平均分的成绩

  • 相信解决了前面的问题,我们的思路也越来越清晰了,低于平均分的成绩,不就是比较得出来吗,那怎么比较呢,还是从列表一个一个提取出来,再把低的成绩存在一个空列表打印出来嘛,哈哈哈:

相关文章

网友评论

      本文标题:第 8 关、编程思维:如何解决问题

      本文链接:https://www.haomeiwen.com/subject/gewtoctx.html