2020级6班Python语言基础导学单

第7周  

第一次课  简单入门, 环境搭建

目标

  理解程序和程序设计,理解程序设计语言和python语言的特点

  理解交互模式和编辑器(文件)模式

  熟悉编程环境,写出最简单程序(只有输出),探索使用机房电脑已经安装好的环境编写程序  

  照写教学资源中的程序,并能够改错通过

  能够独立安装和配置python环境(课后在自己的机器上安装)

  学会搜索和利用网络资源

  学会思考、交流和提问  

学习资源

  https://www.bilibili.com/video/BV1c4411e77t/     

    • 07:07
    • 09:15
    • 08:08
    • 11:43
    • 09:18

作业

  注册中国大学MOOC账号,下载中国大学MOOC APP

  加入中国大学MOOC课程 

    https://www.icourse163.org/course/BIT-268001

    https://www.icourse163.org/course/ZIIT-1002924007

  完成MOOC课程的课后测验题

  完成教材第一章的案例程序,照写,运行通过,尝试理解

  下载bilibili APP

 

第二次课  变量、字符串、程序基本结构

目标

  理解变量和变量名(复习巩固)

  理解字符串(复习巩固)

  掌握如何向显示器输出信息?

  掌握如何从键盘输入信息给变量?

  初步理解什么是选择结构?

  初步理解什么是循环结构?

  初步理解问题描述、求解分析、代码编写和运行验证的过程。

任务问题(复习)

  变量的命名规则,举例正确的变量名,举例不正确的变量名?

  如何交换两个变量的值?

  python有几种表示字符串的方式,举例说明?

  什么是转义字符,举例说明?

  什么是原始字符串,举例说明?

  "34"*3的结果是?'12'+'34'的结果是? 12+34的结果是? ‘12’+34的结果是?

任务问题(新知识)

  python输入信息的函数是?

  python输出信息的函数是?

  python输入信息时接收的数据类型是?

  python用什么表示代码之间的层次结构关系?

  字符串和数字之间的区别是什么?可以相互转换吗?如何转换?

  初学python者在写代码的时候经常容易犯哪些错误?

  什么是选择结构?

  什么是循环结构?

  怎样结束循环?

  break的作用是什么?

  如何产生一个随机数?

  什么是模块?

  导入模块用什么关键字?

学习资源

  https://www.bilibili.com/video/BV1c4411e77t?p=8

    • 11:43
    • 09:18
    • 08:21
    • 12:11
    • 08:26

作业:

  照写资源中的程序,理解并改错通过。

  照写教材第一章中的案例代码,运行通过,尝试理解。

 

第三次课   数字类型、布尔类型、常量、运算符和优先级

目标

  理解数字类型?python有哪些数字类型?各有什么特点?

  5/3的结果是什么?  5/3怎样才能得到1?

  浮点数可以精确表示小数吗?

  为什么不能直接比较两个浮点数相等(==)?

  如何使用科学计数法表示浮点数?

  有哪些算术运算符?

  有哪些可以作用在数字类型数据上的函数?

  什么是求余运算?

  什么是bool(布尔)类型?

  python表示真假结果的关键字是?

  python如何判断一个数字的真假?

  python如何判断一个字符串的真假?

  使用布尔类型进行算术运算的时候python是如何处理布尔类型的?

  python有哪些逻辑运算符,运算规则是怎用的?

  and 和 or 运算符的计算结果一定是布尔类型吗?

  什么是or 和 and运算符的短路逻辑?(较难, 讨论)

  什么是运算符优先级?

  什么是算术、关系、逻辑运算符,他们的优先级有什么规律? 

 

学习资源 

  https://www.bilibili.com/video/BV1c4411e77t?p=9

    • 08:41
    • 11:23
    • 11:39

作业:

  照写资源中的程序,理解并改错通过。

  阅读教材第三章,尝试理解并照写运行教材第三章中的简单案例。

    什么是不同进制,如何用不同机制表示整数?

    练习以下函数作用在字符串上的效果?

    len(x) 字符串长度

    str(x) 任意x转化为对应字符串

    hex(x) 整数x变为十六进制小写字符串

    oct(x) 整数x变为八进制小写字符串

    chr(u) unicode编码返回字符

    ord(x) 字符x转化为unicode编码 python中字符都是unicode编码(统一字符编码)

    尝试理解什么是unicode编码?

    其他字符串对象方法简单了解,放在后面学习,专门的“字符串处理”知识点。

 

   

第8周

实验课

每次实验,请将自己的代码保存为文件并保管好文件,以便自己复习和检查。

 

第一次、第二次实验   输入、输出、类型及转换、基本计算、简单字符串处理

目标

  锻炼和考查知识点:基本输入输出,数据类型,基本问题求解方法,代码编写和调试改错

实验题目

温度转换
温度分为摄氏温度和华氏温度,请利用网络搜索摄氏温度和华氏温度的相关概念以及两者之间的转换关系(公式),编程完成如下任务。输入一个数字代表摄氏温度,程序输出对应的华氏温度。
温度分为摄氏温度和华氏温度,请利用网络搜索摄氏温度和华氏温度的相关概念以及两者之间的转换关系(公式),编程完成如下任务。输入一个数字代表华氏温度,程序输出对应的摄氏温度。
温度分为摄氏温度和华氏温度,请利用网络搜索摄氏温度和华氏温度的相关概念以及两者之间的转换关系(公式),编程完成如下任务。先输入一个数字代表温度,然后再输入一个数字代表温度类型(比如输入0代表摄氏,1代表华氏,也可以自己定义规则),根据输入的温度类型输出另外一种温度类型对应的数值。


成绩计算
小P同学这学期学了三门课,请你帮助他计算一下他的平均分,输入为3个数字,代表小P同学3门课程的成绩,输出小P同学的平均分,要求输出一个整数值。本次遇到了一位特别严格的老师,比如小P同学的平均分为59.9分,但是输出为59分。
小P同学这学期学了三门课,请你帮助他计算一下他的平均分,输入为3个数字,代表小P同学3门课程的成绩,输出小P同学的平均分,要求输出一个整数值。本次遇到了一位严格的老师,比如小P同学的平均分为59.5分,输出为60分,比如小P同学的平均分为59.4分,输出为59分,即采用四舍五入的方式输出结果。
小P同学这学期学了三门课,请你帮助他计算一下他的平均分,输入为3个数字,代表小P同学3门课程的成绩,输出小P同学的平均分,要求输出一个整数值。本次遇到了一位不太严格的老师,比如小P同学的平均分为59.1分,但是输出为60分。
小P同学这学期学了三门课,请你帮助他计算一下他的平均分,输入为3个数字,代表小P同学3门课程的成绩,输出小P同学的平均分,要求输出一个整数值。本次遇到了一位特别仁慈的老师,比如小P同学的平均分为45分,但是输出为60分,即只要达到45分以上就算及格给60,60分及以上不变。

小P同学这学期学了Python课程,Python课程的计分规则为期末成绩占比40%,平时成绩占比60%, 分别输入小P同学的期末成绩和平时成绩,输出小P同学的Python成绩。

小P同学这学期学了Python课程,Python课程的计分规则为期末成绩占比40%,平时成绩占比60%, 输入小P同学的期末成绩,请你帮助小P同学计算一下他的平时成绩至少要达到多少分,总成绩才能及格,输出至少要达到的分数。


字符串相关

说多次,输入一个字符串,再输入一个重复次数,输出该字符串重复多次的结果,比如输入abc,再输入3,输出abcabcabc。

名字长度,输入你的名字,输出你的名字的字符数量,比如输入小P,字符数量为2,输出2.

字符变大写,输入一个英文字符,输出该字符的大写字符。

字符变小写,输入一个英文字符,输出该字符的小写字符。

字符变换,输入一个英文字符,输出该字符后面的第3个字符。如果遇到后面3个没有字符怎么处理?可以自己定义规则。

余数相关
打麻将,A寝室的四个同学今天相聚去打麻将,通过投掷骰子决定谁先抓牌,输入骰子的点数,点数范围为1-12,请你根据骰子的点数帮助他们计算一下应该谁先抓牌。比如输入5,应该输出1, 输入8,应该输出4。

输入一个数,代表今天是星期几,再输入一个数,代表今天后面经过的天数d,输出经过d天之后是星期几。

说数字,输入一个三位数,在三行分别正序输出每一位数字。比如输入123,输出
1
2
3
倒说数字,输入一个三位数,在三行分别反序输出每一位数字。
比如输入123,输出
3
2
1
比如输入700,输出
0
0
7

数学相关

计算函数x的平方在x=1处的导数值并输出。思考:如果函数很复杂,如何计算导数值?

输入三角形的三条边的长度,计算该三角形的周长和面积并输出。

 

易错知识解读

输入数据常见的错误

  错误示例

  a = input()

  b = a/3

  这里输入6,运行会报错,原因是input函数输入返回的类型为字符串类型,你输入的是6,实际上a存的是“6”。 注意520 不等于 "520",  “6” / 3, 字符串是不支持除法运算的,所以会出错。变量都是有类型的,可以用type(a)查看变量的类型。

  正确示例

  a = input()

  a = int(a)

  b = a / 3

  也可以写为更简洁的形式

  a = int(input())

  b = b / 3

  思考:如何输入并获得小数?

  调用函数常见错误

     函数可以将输入的数据进行某种计算返回计算后的数据,比如 a = int(3.6) 的作用是将小数3.6转换为整数,转换结果为3, 所以变量a的内容为3。Python中的函数分为内置函数和第三方函数两种,内置函数是Python自己的函数,可以直接调用,如int、float等函数。第三方函数不是Python自己的函数,是其他模块提供的函数(你可以把模块理解成是别人家),所以调用第三方提供的函数需要先导入模块。请参考以下的代码

    import math

    a = math.sqrt(100)

    print(a)

    如果去掉 import math 会怎样?

    Python功能强大主要就是因为有很多实用的内置函数和第三方模块(这些模块提供了大量的有用的函数)

  同时输出多个数据(变量)    

>>> a = 4
>>> b = 5
>>> print(a,b)
4 5

    将多个变量作为参数传递给print函数,各参数之间用逗号间隔,就可以输出多个变量的值,各输出变量之间自动加入了一个空格。

  控制输出的换行 

    print函数每次默认在输出内容后会输出一个换行符,如果不想换行,可以给print函数传递一个参数end='',如下。

print(1)
print(2)
print(1, end='')
print(2, end='')

运行结果

1
2
12
>>>

 

======================================================================================================================================

请确保以上知识大部分都理解,并能独立完成大部分编程题目,再继续学习下面的内容。

如果不能保证,可以倍速回看视频或者阅读一本网络教程,教程地址为 https://www.runoob.com/python3/python3-tutorial.html

 

第四次课 流程图、分支

目标:

  什么是流程图?有什么用?

  什么是思维导图?有什么用?

  学会使用type函数,学会查看python内置函数帮助文档的方法。 如输出type(6.7)的结果

  学会使用eval函数。如 输出 eval("3+4")的结果

  什么是分支结构,python如何实现分支结构?(*)

  什么是代码块?

  python分支语句有几种语法结构,分别是怎样的?

  什么是嵌套的分支结构?举例说明。

学习资源:

  https://www.bilibili.com/video/BV1c4411e77t?p=13

  谋定而后动(上)

  • 09:17
  • 17:24
  • 09:21
  • 09:53
  • 学习教材104页实例5:身体质量指数BMI,做到理解代码

作业:

  照写资源中的案例程序,理解并改错通过。

  阅读教材4.1节并照写4.1节的案例程序。

  照写教材4.3中的例题程序(BMI)

 

第九周 

第三次实验   分支及运用分支求解具体问题

   简单分支

    程序运行后询问用户输出喜欢吃的水果。用户输入苹果或者香蕉,如果输入的是苹果,则输出苹果是红色的。如果用户输入的是香蕉,则输出香蕉是黄色的。

    输入一个字符,判断输出该字符是大写字符还是小写字符。

    输入一个数字,判断该数字是奇数还是偶数。

    输入一个表示月份的数字,输出该月的天数,假设2月为28天。

  多个条件   

    输入小P的语文和数学成绩,如果语文和数学都是90分以上,输出 “哇,学霸”。如果没有满足都是90分以上,但是有一科90分以上,一科80分以上,输出 “二等奖学金稳了”。如果都没有达到90分,但是都是80分以上,输出 “三等奖学金稳了”。如果都是80分以下,但是都是60分以上,输出 “60分万岁”。 如果有一个小于60分,输出 “学渣,再不努力就晚了”。

    你知道什么样的年份是闰年吗?搜索一下闰年的规则,输入一个年份,判断该年份是否是闰年。

    输入一个年份和月份,计算该月有多少天?注意遇到闰年的情况。

    输入百分制成绩,输出对应的等级成绩。规则为90分及以上, 输出A, 80分及以上,输出B, 70分及以上,输出C, 60分及以上,输出D, 60分以下,输出E。

 

第五次课  循环的意义,while循环及应用,循环的嵌套

知识和目标

  理解循环的作用?

  有哪些支持循环的语法?

  怎样对while循环进行控制?

  什么是死循环?

  如何直接从循环退出?

  break 和 continue有什么区别?

  else和循环语句配合使用有什么作用?(难点) 

  什么是循环的嵌套,什么时候可能使用循环嵌套?

  什么叫做循环的层数?

学习资源

  https://www.bilibili.com/video/BV1c4411e77t?p=18

  • 08:47
  • 12:21

作业:

  照写资源中的案例程序,理解并改错通过。

 

第六次课  for循环,可迭代对象

知识和目标

  什么是可迭代对象?

  什么是迭代?

  range有什么用?

  举例说明range的3种用法?

  怎样用for语句实现循环?  

学习资源

  https://www.bilibili.com/video/BV1c4411e77t?p=19

  P19了不起的分支和循环(V)

  学习阅读教材4.4节的内容

  学习阅读教材4.5节的内容(random模块)

  学习阅读教材4.6节的内容(实例6 计算π值)

作业

  照写资源中的案例程序,理解并改错通过。

  用for语句实现九九乘法表。

  照写教材案例程序和示例代码。

 

第10周 

第七次课  实验(基础 、分支结构)题目解析和答疑

  讲解实验(基础 、分支结构)题目,讲解编程思路,结合运用到的知识点。

  现场解答疑问,可提前将问题在SPOC教师答疑区提出?

 

第四次实验   循环及运用循环求解具体问题

   1.数字求和

编写程序计算如下数列的值:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

1-2+3-4...966‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

其中,所有数字为整数,从1开始递增,奇数为正,偶数为负

2.水仙花数

"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。

  3.三次登录机会

给用户三次输入用户名和密码的机会,要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”。

  4.实现教材 实例6 计算π值

  5.最高分

    一开始输入一个数字n表示有n个同学,然后输入n个数字表示n个同学的成绩,你的程序需要找出这个n个同学成绩的最高分,并输出该最高分。

  6. 找函数的极小值。

    给定函数,比如f(x) = (x-1)的平方, 给定x的取值范围,比如从-100到100, 你的程序需要找到这个函数针对自变量的取值范围内极小值点的位置和极小值。

    输出极小值的位置及极小值。比如以上举例的输出为 1, 0.

  7.完成教材121页 第4章的 程序练习题4.1-4.5,其中4.2和4.5涉及未学过的知识,可以不用自己写,建议看一下教材提供的参考答案,选做4.6羊车门问题。

 

====================================================================================================

以上内容中的选择结构和循环结构是非常重要的内容,理论上,学完上面的内容,就可以用Python完成所有的编程题目了。

编程思维就是用这两种结构的组合来对问题进行求解,需要一定的算法(套路),掌握他们需要一定的练习。一旦掌握就轻松了,而且

很容易迁移到其他的编程语言上,因为编程思想都是相同的,只是语言细节不同。就像大家写作文,要多看多写,拿到题目后就很容易想到

总体上的段落结构。

请认真完成以上内容的学习并确保能完成大多数实验和作业,再继续下面内容的学习。

 

算法(补充扩展

  递推(迭代算法)1

  猴子吃桃简单版(讲解思路)

    猴子第一天吃一个桃子,以后每天都吃前一天吃的桃子数量的2倍多一个,帮猴子算一下它第10天的时候要吃多少个桃子?

  扩展练习

  猴子吃桃经典版    

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。问猴子第一天摘了多少个桃子?

能不能搞一个猴子吃桃高级版?

 

斐波那契数列基础版

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。请你计算一下斐波那契数列的第n项是多少?n由键盘输入。

 

斐波那契数列进阶版

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。请你计算一下斐波那契数列的前n项的和?n由键盘输入。

 

穷举(暴力搜索)

打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

有100个和尚和100个馒头,大和尚每人分4个,小和尚每4人分一个,大小和尚有多少个?

  

  概率算法,用频率模拟概率

  蒙特卡洛算法求PI值(教材例题)

  三羊门问题(教材课后习题)  

===================================================================================================== 

 

第八次课  Python字符串格式化输出,不同类型混合输出; 字符串处理常用函数和常用字符串处理方法; 字符串索引的概念和应用

知识和目标

  理解格式化输出的含义?

  掌握如何控制输出数据的格式?

  利用字符串的format函数控制格式?

  利用 % 控制格式?(选)

  记忆常用数据类型对应的格式控制符号。

  能根据题目的要求编写代码控制输出的格式。

  理解什么是函数?

  掌握常用字符串处理函数的用法?

  理解方法的概念,理解方法和函数的区别。

  方法需要通过字符串或者变量加.(点) 来调用。

  掌握常用字符串处理方法的用法?

  掌握如何从字符串中取得其中的一个字符,理解和掌握索引的概念和用法。 字符串索引指从字符串中取得一个字符的方法

    语法举例

    s = 'abc'

    print(s[0])  #输出a ,   索引0代表第0个,就是字符a

    print(s[-1]) #输出c,索引-1代表最后一个,输出c

    请自行尝试其他的索引数字,如1,2,3; -2,-3,-4等,理解索引数字的含义

学习资源(选择适合自己的一个学习)

  视频

  https://www.bilibili.com/video/BV1xs411Q799?p=16   

  http://www.icourse163.org/learn/preview/SICNU-1461324161?tid=1462098441#/learn/content?type=detail&id=1239068546&cid=1259997906  

  SPOC补充视频(对应教材3.5节和3.6节)

  字符串 http://www.icourse163.org/learn/preview/SICNU-1461324161?tid=1462098441#/learn/content?type=detail&id=1239141490

  文本

  教材3.5节,字符串类型及操作

  教材3.6节,字符串类型的格式化

  

字符串处理函数
len(x) 字符串长度
str(x) 任意x转化为对应字符串
hex(x) 整数x变为十六进制小写字符串
oct(x) 整数x变为八进制小写字符串
chr(u) unicode编码返回字符
ord(x) 字符x转化为unicode编码 python中字符都是unicode编码(统一字符编码)

字符串处理方法
str.lower()/str.upper() 返回字符串的副本,全部小/大写
str.split(step-None) 返回一个列表,由str根据sep被分隔的部分组成
str.count(sub) 返回子串sub在字符串中出现的次数
str.replace(old,new) 旧字符串替换为新字符串
str.center(width,fillchar) 字符串根据宽度居中,其它填充
str.strip(chars) 去掉字符串中在chars中列出的字符
str.join(iter) 字符串中除了最后一个字符外,每个字符后加一个, 用于字符分隔

 

作业

  完成视频中的示例程序,完成教材对应章节的示例程序。

  继续完成前面有关分支和循环结构的作业和实验题目。

字符串专项练习

  是否是回文字符串

    回文字符串是指正序读和反序读都一样的字符串,输入一个字符串,判断该字符串是否是回文字符串。

  是否是有效的车牌号码

    车牌号码由5位字母和数字组成,其中字母必须都是大写字母,并且至少有一位数字,输入一个车牌号码,你的程序判断一下该号码是否是一个有效的车牌号码。

  是否限行

    C城市为了环保和缓解道路交通压力,实行尾号现行,规则为:周一限行尾号为1和6的车辆,周二限行尾号为2和7的车辆,周三限行尾号为3和8的车辆,周四限行尾号为4和9的车辆,周五限行尾号为5和0的车辆;周六周天不限行。

    输入一个车牌和一个表示星期几的数字,你的程序要计算该车牌号码该天是否现行,输出是或者否。

  输出名字最长的国家

    程序接收多个国家的名字字符串,你的程序输出长度最长的国家的名字。

  身份证号提取出生日期

    从身份号码中可以看出一个人的出生日期,你的程序接收一个身份证号码,输出这个人的出生日期,输出格式举例:2000年10月08日。   

 

第11周

第九次课   循环实验题目解析和答疑

  解析循环实验中给出的实验题目,讲解求解思路和会用到的语法基础。

  现场解答SPOC答疑区中的问题。

  演示如何在Python123中完成SPOC中提到的作业。

  指导注册Python123平台, 加入对应课程。  

 

第五次实验 完成Python123平台注册与课程加入,加入课程SPOC平台  

  学会在Python123平台完成编程作业,完成平台发布的编程作业。

  实验题目将在python123平台上发布,后面上机考试也在123平台上完成,在Python123平台发布的编程作业、测验和编程考试将计入期末成绩(占比很大),学会使用该平台。

  Python123平台地址  

  https://www.python123.io/    课程代码: C3554

  SPOC平台主要提供了教材配套视频讲解和课件下载,同时提供讨论区功能,讨论区提问和回答次数将计入平时成绩,具体规则进入SPOC课程后见课程说明,学会使用SPOC平台。

  SPOC平台地址

  https://www.icourse163.org/spoc/course/SICNU-1461324161, 课程加入密码为20201106

 

第六次实验 完成Python123平台发布的实验作业1

  题目发布在平台上

 

第12周

第十次课   列表  基本概念、索引和切片

目标

  理解列表的作用?掌握定义列表的语法。

  列表中的元素必须是相同类型的数据吗?

    可以不相同,这点和C语言不一样

  掌握依次访问列表中每个元素的方法。

  什么是下标索引?如何求列表的长度?

    注意:索引是从0开始,和C语言是一样的

  什么是列表的切片?切边的使用有哪些灵活性?

    省略,步长(可正负)

  列表的操作

  用列表方法来完成

    增(append, extend, insert)、删除(remove, pop, clear)、改、查

  学会如何查找方法的帮助文档,帮助文档会告诉你如何使用这些方法。

  判断一个数据是否在列表中 ,可以使用 in 运算

  如 a = [1, 2, 3]

  1 in a 将返回True, 4 in a 将返回False

资源

  https://www.bilibili.com/video/BV1c4411e77t?p=20

  https://www.bilibili.com/video/BV1c4411e77t?p=21

作业

  照写资源中的代码并理解其含义。  

  用列表解决求最大成绩问题,提示:将所有成绩放入一个列表,max函数可以求列表中的最大元素。

  列表中的索引和切片语法同样适用于字符串,自己设计代码进行验证。

  思考:字符串和列表有哪些不同?

  通过以上内容学习,已掌握理解教材P35页 实例1.1 温度转换程序所需要的知识点,自行学习并理解教材实例1.1的代码。

 

第十一次课   列表元素修改,查找元素,列表运算,嵌套列表

目标

  修改列表元素

    利用索引和切片实现

  对列表元素进行排序(难点)

    排序函数,从小到大,从大到小

  查

    count, index, copy,用切片实现拷贝    

  列表的运算

    +(拼接)

    * (重复元素)

  嵌套列表(难点,需反复学习和讨论)

    列表中的元素还是列表

    嵌套列表可以用于构建二维结构,比如矩阵

    通过索引访问嵌套列表中的元素。支持一个索引和两个索引,注意他们的区别。  

资源

  https://www.bilibili.com/video/BV1c4411e77t?p=22

  https://www.bilibili.com/video/BV1c4411e77t?p=23

  阅读教材160页-165页。 

作业 列表专项训练

  照写案例中的示例代码。

  自己实现教材实例9的题目要求。

  成绩处理

  先输入一个数n,表示班级同学的数量,然后输入n个整数,表示每个同学的成绩。老师希望班级的成绩不要太难看,因此想写个程序计算一下班级是否有一半的同学不及格(小于60分),如果有,则每个同学的成绩加10分; 如果没有,则成绩保持不变。请你帮老师写一个程序,输出按照这个规则处理之后的每个同学的成绩。 

  

"""
先输入一个数n,表示班级同学的数量,然后输入n个整数,表示每个同学的成绩。老师希望班级的成绩不要太难看,因此想写个程序计算一下班级是否有一半的同学不及格(小于60分),如果有,则每个同学的成绩加10分; 如果没有,则成绩保持不变。请你帮老师写一个程序,输出按照这个规则处理之后的每个同学的成绩。
"""
n = int(input())  

scores = [] #定义一个空列表

for i in range(n):
    sc = int(input())
    scores.append(sc)  #将每个人的成绩添加到列表的末尾

#计算总成绩和平均分
totle = sum(scores)
ave = totle/len(scores)


print('同学原始成绩', scores)
print('平均成绩', ave)

#如果平均分小于60分, 则每个人加10分
if ave<60:
    for i in range(n):
        scores[i] += 10

print('调整后的成绩', scores)

 

 

  是否有相同

  输入n个数字,程序判断这n个数字中是否有相同的数字。

"""
输入n个数字,程序判断这n个数字中是否有相同的数字。
"""
"""
解题思路:先将输入的n个数字放入列表中
然后遍历列表中是否有相同的数字
"""
n = int(input())  

ls = [] #定义一个空列表

for i in range(n):
    x = int(input())
    ls.append(x)  #将每个输入的数字添加到列表的末尾

b_same = False #先假设没有相同的数字

for x in ls:
    if ls.count(x)>1:  #看ls列表中有多少个与x相同的数字
        b_same = True  #成立说明有相同的数字
        break

if b_same==True:
    print('some number is same in list')
else:
    print('no same numbers in list')

 

  有相同退出输入

  不断的接收键盘输入的数字,一旦遇到输入的数字之前已经输入过了,则退出,输出一共输入了多少个不相同的数字?

"""
有相同退出输入

不断的接收键盘输入的数字,一旦遇到输入的数字之前已经输入过了,则退出,输出一共输入了多少个不相同的数字?

"""
"""
解题思路:在一个循环中写输入的代码,当输入过相同的数字的时候,退出循环
同时统计有多少个不相同的数字
"""

cnt = 0
ls = [] #定义一个空列表,用于存放输入的所有数字

b_same = False

while not b_same:
    x = int(input())
    if x not in ls:  #x不在列表中成立,说明之前没有输入过
        ls.append(x)
    else:
        b_same = True

# 列表的长度就是不相同数字的数量
print('you have inputed {} not same numbers'.format(len(ls)))

 

  找最小

   输入n个数字,程序输出n个数字中最小的数字及最小的数字是第几个数字。

"""
找最小

   输入n个数字,程序输出n个数字中最小的数字及最小的数字是第几个数字。
"""

"""
找最小

   min函数可以直接找到列表中的最小值, 找到后用index方法定位最小值的位置
"""

n = int(input())  

ls = [] #定义一个空列表

for i in range(n):
    x = int(input())
    ls.append(x)  #将每个输入的数字添加到列表的末尾

min_value = min(ls)
min_pos = ls.index(min_value)

print('the min value is', min_value, 'at ', min_pos, 'position')

  

  分数段统计

  输入n个同学的成绩,你的程序需要统计一下每个分数段的人数,分数段包括60分以下,[60-70), [70-80), [80-90), [90-100], 统计并输出各分数段的人数。

 

"""
分数段统计

  输入n个同学的成绩,你的程序需要统计一下每个分数段的人数,
分数段包括60分以下,[60-70), [70-80), [80-90), [90-100],
统计并输出各分数段的人数。
"""

"""
解题思路
"""

n = int(input())  

ls = [0,0,0,0,0,0,0,0,0,0] #定义一个列表,有9个元素,用于存放每个分数段的人数

for i in range(n):
    x = int(input()) #输入每个人的成绩
    i = x//10  # 对应分数段索引
    i = 9 if i==10 else i   # 索引为10变为索引为9
    ls[i] += 1   #对应分数段人数加1

print('成绩分布表')
print(ls)

print('<60', sum(ls[0:6]))
print('[60,70)', ls[6])
print('[70,80)', ls[7])
print('[80,90)', ls[8])
print('[90,100]', ls[9]) 

成绩处理(进阶挑战, 处理在一行中输入多个数据)  

  输入一行若干个数字,数字之间用空格间隔,代表每个同学的成绩。老师希望班级的成绩不要太难看,因此想写个程序计算一下班级是否有一半的同学不及格(小于60分),如果有,则每个同学的成绩加10分; 如果没有,则成绩保持不变。请你帮老师写一个程序,输出按照这个规则处理之后的每个同学的成绩。提示:使用字符串的split方法。

s = input() #接收的是字符串,比如 s = "45 76 56 98"

#将字符串转换为数字列表


s = s.replace(' ', ',') s = "45,76,56,98"

scores = list(eval(s))  #利用eval将字符串表达式计算为数值

print(scores)

totle = sum(scores)
ave = totle/len(scores)


print('同学原始成绩', scores)
print('平均成绩', ave)

#如果平均分小于60分, 则每个人加10分
if ave<60:
    for i in range(n):
        scores[i] += 10

print('调整后的成绩', scores)

 

 

 

第十二次课   变量名的本质、深浅拷贝(本节课较难,尽量理解,不做硬性要求)

知识目标  

  is 运算符

  id 函数

  Python中的变量名都是引用型变量,列表中的元素也是引用(难点,尽量理解)

  深浅拷贝的含义

  如何调用方法

资源

  https://www.bilibili.com/video/BV1c4411e77t?p=24    

作业

  照写资源中的代码,调试通过

  用资源中学到的知识解释以下现象  

>>> a = [1,2,3]
>>> b = a
>>> a[1] = 4
>>> b
[1, 4, 3]

>>> a = [[1]]*3
>>> a
[[1], [1], [1]]
>>> a[1][0] = 2
>>> a
[[2], [2], [2]]

-----------------------------------------------

注意整数和列表不一样,整数是不可变类型

>>> a = 1
>>> b = a
>>> a = 2
>>> b
1 

 

第十三次课 列表推导式、带条件的列表推导式、复杂(嵌套)列表推导式(较难 一般掌握)

知识目标  

  列表推导式的用法

  带条件的列表推导式

  复杂(嵌套)列表推导式

资源

  https://www.bilibili.com/video/BV1c4411e77t?p=25

  https://www.bilibili.com/video/BV1c4411e77t?p=25   

作业

  照写资源中的代码,调试通过

 

第六次实验  完成列表应用相关的作业和实验

 

第十四周 课程安排

第一次

  课前    

    利用碎片时间学习如下链接的内容  python程序设计基础_中国大学MOOC(慕课) (icourse163.org)   学习该链接小节的前3个视频内容

  课中

    完成雨课堂上发布的测试题(测试题),测验题的分数将计入期末成绩。

    两个人一组,互相给对方讲解作业 列表专项训练中的题目代码。

    小组讨论雨课堂上发布的测试题,特别是没有作对的题目。

    照写作业 列表专项训练中的题目代码。

  课后

    完成123平台对应练习和实验。

 第二次

  课前

    思考作业 列表专项训练中的题目的解题思路。

  课中

    默写作业 列表专项训练中的题目代码。

  课后

    完成123平台对应练习和实验。

第三次  

  课前

    利用碎片时间学习如下链接的内容  python程序设计基础_中国大学MOOC(慕课) (icourse163.org)   学习该链接小节的第4、5个视频内容

  课中

    对照教材,理解集合的含义,集合有关的语法和方法,照写教材和视频中的集合案例,实现教材实例9

    实现集合编程专项训练,写成代码。

  课后

    完成123平台对应练习和实验。

 

集合编程专项训练 

  输入若干个整数,求这些整数中有多少个不一样的数字,并输出这些不一样的数字。

  输入若干个整数,求这些整数中有多少个不重复的数字,并输出这些不重复的数字。 

  输入若干个整数,求这些整数中有多少个重复的数字,并输出这些重复的数字。

  A专业开了一些课,B专业开了另外一些课,计算一下A专业开了但是B专业没有开的课。

  A专业开了一些课,B专业开了另外一些课,计算一下A专业开了同时B专业也开了的课。

  A专业开了一些课,B专业开了另外一些课,计算一下A专业和B专业都开了的哪些课。

 

 

 

=========================================================================================================================================

高级应用训练(难度高,跳几跳,达得到,扩展思维)

  排序系列

  集合    

班级人员信息统计
题目描述 输入a,b班的名单,并进行如下统计。 输入格式: 第1行::a班名单,一串字符串,每个字符代表一个学生,无空格,可能有重复字符。 第2行::b班名单,一串字符串,每个学生名称以1个或多个空格分隔,可能有重复学生。 第3行::参加acm竞赛的学生,一串字符串,每个学生名称以1个或多个空格分隔。 第4行:参加英语竞赛的学生,一串字符串,每个学生名称以1个或多个空格分隔。 第5行:转学的人(只有1个人)。 输出格式 特别注意:输出人员名单的时候需调用sorted函数,如集合为x,则print(sorted(x)) 输出两个班级的所有人员数量 输出两个班级中既没有参加ACM,也没有参加English的名单和数量 输出所有参加竞赛的人员的名单和数量 输出既参加了ACM,又参加了英语竞赛的所有人员及数量 输出参加了ACM,未参加英语竞赛的所有人员名单 输出参加英语竞赛,未参加ACM的所有人员名单 输出参加只参加ACM或只参加英语竞赛的人员名单 最后一行:一个同学要转学,首先需要判断该学生在哪个班级,然后更新该班级名单,并输出。如果没有在任何一班级,什么也不做。 输入样例: abcdefghijab
1 2 3 4 5 6 7 8 9 10 1 2 3 a b c 1 5 10 a d e f a 输出样例: Total: 20 Not in race: ['4', '6', '7', '8', '9', 'g', 'h', 'i', 'j'], num: 9 All racers: ['1', '10', '2', '3', '5', 'a', 'b', 'c', 'd', 'e', 'f'], num: 11 ACM + English: ['1', 'a'], num: 2 Only ACM: ['2', '3', 'b', 'c'] Only English: ['10', '5', 'd', 'e', 'f'] ACM Or English: ['10', '2', '3', '5', 'b', 'c', 'd', 'e', 'f'] ['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

   

生日悖论
生日悖论,指如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。尝试编程验证。

验证方法提示:使用从1到365的整数代表生日。测试n次,每次生成23个随机数,随机数的范围从1到365(包括365)。
然后查看有无重复的生日。
最后算出重复的比率。

输入格式:
随机数种子x 测试次数n

注意:需将x转换为整数型再进行设置。

输出格式:
rate=算出的比率,比率保留2位小数

输入样例:
3 1000
输出样例:
rate=0.54

 

二维数据结构存储与算法练习

一个班级有若干名同学,每个同学学习了若干课程,现在需要将每个同学的每个课程保存起来(提示:所有数据可以看作是一个数据表格,一行代表一个同学,一列代表一门课程,考虑用嵌套列表来保存)。

1 数据可以在程序中直接赋值(简单),也可以通过输入获得成绩(稍微复杂一点,考虑如何输入大量数据)

2 求所有成绩的最高分和最低分。

3 求每个人的平均分,求每一门课程的平均分。

4 将所有数据保存到文件。

 

  

第十四次课  学习教材第二章 Python程序实例解析、Python画图  

目标:

  利用已有知识点学习阅读教材案例

  学习turtle绘图库的基本用法

资源

  教材第2章

  SOPC 图形绘制

http://www.icourse163.org/learn/preview/SICNU-1461324161?tid=1462098441#/learn/content?type=detail&id=1239068537

作业

照写教材案例  

以小组为单位,完成一幅创意绘图作品,上传到Python123平台 

 

 

 

  

参考资料

  教材目录及笔记, https://blog.csdn.net/ovo2263/article/details/108046581 

     Python菜鸟教程,https://www.runoob.com/python3/python3-tutorial.html

  

  

*****************************************************************************************************************************

案例:

python画递归树

 1 import turtle
 2 
 3 t = turtle.Turtle()
 4 def draw_tree(step, deep=0):
 5 """
 6 step为树干长度,deep为当前叶子深度
 7 """
 8     if deep==4:
 9         return
10     t.forward(step) #画树干
11 
12     #画左子树,需要将角度变化回原始角度
13     t.left(25) 
14     draw_tree(step//2, deep+1) 
15     t.right(25)
16 
17     #画右子树,需要将角度变化回原始角度
18     t.right(25)
19     draw_tree(step//2, deep+1)
20     t.left(25)
21 
22     #左右子树都画完,让小乌龟回到树干的起始位置
23     t.backward(step)
24 
25 
26 t.left(90) 
27 draw_tree(100, 0)

 

 

 

  

 

 

  

  

  

  

 

  

  

 

 

 

  

  

 

  

 

posted on 2020-10-08 22:16  candyYang  阅读(3286)  评论(0编辑  收藏  举报