“Python-2020-fall”的版本间的差异
跳到导航
跳到搜索
| 第240行: | 第240行: | ||
编程题要提交“.py”文件,不要用shell,文件要保存到一个可以找到的地方。 | 编程题要提交“.py”文件,不要用shell,文件要保存到一个可以找到的地方。 | ||
注:注意养成一个文件管理的好习惯:小心误删误覆盖;版本控制;不要放桌面也不要建立太复杂的文件夹关系;... | 注:注意养成一个文件管理的好习惯:小心误删误覆盖;版本控制;不要放桌面也不要建立太复杂的文件夹关系;... | ||
| − | 考试会让你写个函数,函数名题目会给定,函数要有传入参数,有返回值。对于想拿高分的同学,要注意边界条件,要缜密思考。 | + | 考试会让你写个函数,函数名题目会给定,函数要有传入参数,有返回值。对于想拿高分的同学,要注意边界条件,要缜密思考。 |
| − | 写完函数,用测试语句测试,记得把测试语句注释(#)掉,要不然就用“if __name__ == 'main': ”把测试语句囊括。 | + | 写完函数,用测试语句测试,记得把测试语句注释(#)掉,要不然就用“if __name__ == 'main': ”把测试语句囊括。 |
PyCharm和IDLE是一个集成的开发环境(IDE:Integrated Development Environment),拥有的功能有: | PyCharm和IDLE是一个集成的开发环境(IDE:Integrated Development Environment),拥有的功能有: | ||
2020年10月26日 (一) 09:29的版本
Python程序设计课程主页(2020年秋季学期)
Teacher: 李正华
Teaching Assistant: 周厚全、刘泽洋、周仕林
上课时间和地点、QQ群
周一13:30-15:20卫校301; 周五13:30-15:20理工楼153 周二13:30-15:20理工楼238、247(上机); python-2020学习交流qq群:893402501
考试安排
- 第一次考试:11.11(周三),考试内容:基础、分支、列表、循环
- 第二次考试:12月
- 第三次考试(期末):1月
- 考试形式:上机考试
- 选择题
- 编程题:每一道题对应一个函数(给定了函数名,不能随便修改),所有函数放到一个.py文件中
- 得至少练一次?可否开一下系统?
Mooc混合式教学
中国大学慕课 Python程序设计 苏州大学 朱晓旭等
请同学们同步学习这个网课。
理论课上,我会留一些时间,来针对网课的内容进行讲解、答疑。
参考资料
实验课安排(有问题多主动问,Python不是教会的,而是不断动手、思考学会的)
实验报告说明
实验报告由两部分组成:
- 实验报告:学号-exp-x.pdf (x表示第几次实验)
- 注意文件命名格式,必须用pdf文件
- 包含题目、流程图、解题思路、运行结果截图、遇到什么问题及如何解决的、总结有哪些收获、对老师的建议
- 每次会提供一个基本的实验模板,学生按照自己的方式去安排报告的内容
- 每一个题目,强烈建议都先画流程图,然后写代码。可以手画流程图然后拍照,也可以用画图软件去画。
- 代码:学号-exp-x.py
- 把所有题目的代码放到一个py文件中
- 注意可读性,方便老师批改,可以写一些必须的注释
注意事项:
- 抄袭会严惩!当次实验成绩清0!
- 实验报告、代码,要保留好,不要删除,期末的时候可能要统一放到一个文件夹中,交给老师。
- 除了基本的题目,还可以额外做老师在课堂上提出的思考题、扩展题。
- 根据认真程度、完成的质量、可读性等,来综合评分
- 每次作业批改后,会在理论课或上机课上进行讲解,重点是讲大家常见的错误。
往年的习题集:
扩展题目(选做,可以放到实验报告中)
- 2020.10.23:求平方根,是否还有其他更快的解法(之前讲的是二分查找)
- 2020.10.15:把求平方根的代码,扩展为x为任何大于0的浮点数。注意一定要先画流程图。
实验课常见问题
2020.10.20:
- input()函数从用户得到的输入类型是字符串,不能直接进行数值的运算,需要类型转换。
- 希望一次性input多个数字,可以用字符串split方法:
- lst = list(map(int, input('please input:').split())) #一次性输入多个数字,按空格隔开;并存储到一个列表中
- x, y, z = eval(input('please input two int, using comma as the delimiter: ')) # 输入 3, 5, -4
- lst = eval(input('please input a python list: ')) # 输入 [3, 5, -4],中括号必须有,作为列表对象存储
- a_tuple = eval(input('please input several int, using comma as the delimiter: ')) # 输入 3, 5, -4,作为元组对象存储
- 注意变量 x 与字符串 "x" 之间的区别。
第一次实验报告 2020.10.20
- 截止时间:
- 报告模板(含基本题目):
讲给同学们的话
大学生活、学习的一些建议
- 计算机英语很重要(1000左右单词),有助于理解和记忆;
- 逻辑思维能力很重要,从流程图(或伪代码)锻炼起;
- 多动手、多练习、多思考、多尝试,才能学好编程;
- 编程只是计算机科学与技术这门学科的最基本能力。要想成为顶尖的编程高手,必须对计算机的硬件、操作系统、数据结构、算法等基础理论理解透彻,所以要长期坚持,不断提高自己的计算机素养和基础。
2020.10.23 今天又少了一次课(第5周周五少了一次)。希望大家利用各种资源,抓紧学习。我的课主要以理解为主,把知识串起来。要学好python,要不断写代码、调试。要靠自己
讲义记录
TODO
2020.10.23
关于考试
逻辑运算的操作数、返回值
位运算(二进制、十六进制等时再具体讲)
运算优先级
关于indent,4个字节、8个字节、tab键,都可以,但是必须统一。给大家做实验试试。
字符串、特殊字符、字符串拼接+
字符串
str1 = '123'
str2='''hello
python'''
# python中不区分单引号和双引号;三单引号和三双引号中间的字符串在输出时保持原来的格式。
特殊字符
# 转义符'\'
# 换行
print('\n')
# 制表符
print('\t')
# 空格
print(' ')
重载操作符overloading
'abc'+'adf'
3+5
内置其他数据类型:bool complex
python中float,不区分单精度和双精度(C语言中是区分的)
python中没有字符类型,只有字符串string(C语言中有char)
标量和矢量(向量是一种、矩阵、集合、序列、字典)
complex是可变的吗?是标量还是矢量?
不可变对象immutable、可变对象mutable【讲列表时要讲,讲整数赋值时也要讲的】
垃圾回收机制
内置(工厂)函数,类型转换:int() float() str()
input(prompt)
注释、input(prompt)
print(end)、random模块的使用
选择 -> 列表 -> 循环 -> 元组 -> 字符串切片、方法等(讲课顺序)
循环的学习:表格法,结合流程图
字符串格式化(formating operator)【看看第一次考试是否用到,决定什么时候讲。另一种格式化方法也讲一下,花括号的形式】
以某种格式将n个相同类型或不同类型的对象转化为一个字符串
'%d' % 3 # '3'
'%d %d --- %d' % (3, 4, -7) # '3 4 --- -7'
'%d %d --- %d' % (0xff, 0o33, 0b011110) # '377 27 --- 30'
'%o %x --- %d' % (0xff, 0O33, 0b011110) # '377 1b --- 30'
'0x%x' % 255 # '0xff'
'%8d %5d --- %10d' % (0xff, 0o33, 0b011110) # 默认右对齐
'%-8d %-5d --- %-10d' % (0xff, 0O33, 0b011110) # 左对齐
‘%f’ % 9.9 # 输出浮点数‘9.900000’
‘%10f\n%10f\n%10f’ % (9.9, 12.754, 3.34)
‘%6.3f\n%6.3f\n%6.3f’ % (9.9, 12.754, 3.34) # 占6个字节,小数点后保留3位
‘%10s’ % 'hi'
整数的进制问题,互相转换函数; 位运算(二进制、十六进制等时再具体讲)
补码存储(高级部分)
字符串方法(方法成员)
'abc'.center(10) # 占10个字节,居中
'abc'.isalpha() # 字符串中所有字符是否都是字母,返回布尔值
' abc \t\n'.strip() # 去除空白符
'##abc'.strip('#') # 去除指定符号
'abc'.replace('ab','AB') # 替换
'a b c'.split() # 切分字符串
函数要早点讲,考试要用到,只讲基本的即可
print(3, sep='#', end='abc')
help(print) # 查看帮助文件
ord('a') # 字符对应的ASCII码(American standard code for information interchange)
chr(97) # 返回与ASCII码对应的字符
hex(1) # 十六进制
bin(255) # 二进制
成员操作符membership【列表之后讲】
'abc' in 'abcdefg'
'ac' not in 'adf'
s = 'abcdef' # 下标s[1]='b',s[-1]='e'
#切片操作,前闭后开
s[3:5] # 'de'
s[3:] # 'def'
s[:3] # 'abc'
s[1:5:2] # 'bd',步长为2
s[-5:-2] # 'bcd'
s[::2] # 'ace'
s[::-1] # 'fedcba'
s[-2,-5,-2] # 'ec'
标量Scalar(integer, floating-point number, boolean)
矢量Non-Scalar(字符串string等)
python的特点
high-level(python > c++ > c > 汇编)
C语言能做的,Python都能做?感觉不一定
解释性(interpretative)
面向对象(object)
跨平台、移植性高
2.0和3.0不兼容,语法有一些小的变化
2020.10.26 第5次理论课
- 板书:
- 视频:
考试:
电脑阅卷,选择题30分钟20~25个题目,立刻进入编程题,3~5个题目,两个小时。
编程题要提交“.py”文件,不要用shell,文件要保存到一个可以找到的地方。
注:注意养成一个文件管理的好习惯:小心误删误覆盖;版本控制;不要放桌面也不要建立太复杂的文件夹关系;...
考试会让你写个函数,函数名题目会给定,函数要有传入参数,有返回值。对于想拿高分的同学,要注意边界条件,要缜密思考。
写完函数,用测试语句测试,记得把测试语句注释(#)掉,要不然就用“if __name__ == 'main': ”把测试语句囊括。
PyCharm和IDLE是一个集成的开发环境(IDE:Integrated Development Environment),拥有的功能有:
编辑(edit);运行(run/execute);调试(debug)。PyCharm这学期可能不会讲。
调试方法:单步执行;print();...
简单语句:
6. 逻辑运算(Logical Operation):
Q1:operand must be True/False?NO!
Q2:return value always be True/False?NO!
例:x = 2 and 3
print(type(x))
Output:3
注:非bool型会有一个隐式转换:
对于int,0 → False
!= 0 → True
对于float 0.0 → False
!= 0.0 → True
对于str '' → False
7. 位运算(bit)
8. 优先级(priority)由高到低:
各类括号,指数(**),位运算(~; +; -),算数运算(*; /; %; +; -),关系运算(<; >; ==; >=; <=; !=);逻辑运算(and; or; not),赋值语句(=; -=; +=; /=; *=)
注:详情请见 https://www.runoob.com/python3/python3-basic-operators.html
复杂语句:函数定义;while;if-else;类定义;...
缩进(Indent):
为了复合语句,可以嵌套,但是不要写的过于复杂了。
4个空格或者一个TAB(制表符)为一层缩进。
注:空格和制表符不能交替使用,不过一般的IDE会自动帮你对齐缩进,并且使用一种缩进方法。
制表符不一定是8个空格,可配置,也不一定必须使用4个空格,只要文件内部是一致(consistent)的即可。
字符串(String,简称str):一串连续字符(Character,简称char)。
只考虑英文字符的话,一个字节内存存一个字符。ASCII表把字符映射成唯一数字。
“str”是Python内置(预定义提供)的基本数据类型,在Python中,char和str都属于“str”类型。
1. 定义方式:单引号('这是一个字符串');双引号("这是一个字符串");三单引号('''这是一个字符串) (有区别吗?)
2. 转移字符:
'\n'回车;'\\'反斜杠;'\t'制表符;'\b'退格符(backspace);'\a'响铃;...
3. 操作函数:
+ :一个操作符面对不同场景(操作数类型)有不同的含义,即重载(overloading)。
例:'abc' + '123' 返回 'abc123'
len():返回字符串长度。
例:len('abc\n') 的返回值为4。'\n'是一个转义字符,反斜杠(backslash)打头,代表着换行符(回车)。
写一个程序:输出当前时间,新输出的时间刷新旧时间。(提示,利用退格符,PyCharm可以,用cmd也可以,IDLE不行)
2020.10.23 第4次理论课
运动会!
2020.10.19 第3次理论课
第一次考试:11.11 Wednesday 晚上 2-3小时;考试内容:基础 循环 列表 分支
Python的基础:
python(作为语言)和英语作对比,
字符:大小写字母;数字;#’’...
单词:keywords:while; def;函数名;变量名;数字;字符串。和英语语言不一样,单词可以不符合英语字典里的单词,比如'_a123'对于python也是合法的变量名
句子:statement vs sentence
段落:复合语句,文件,包 vs 节,章,篇,书
语法:非常严格(格式和语法都很严格) vs 比较随意
程序语言和英语哪个难?当然是英语,程序语言有唯一语义。
语句 (statement):
简单语句:
1. 赋值语句assignment:把一个对象(object)绑定(binding)到一个名字(name, 标识符, identifier)上。
例如: x = 7 → 把整数对象绑定在了x上。
注:object是内存中实际存在的东西,有4个属性(attribute):
id (identity,地址);
类型 (数据类型,类名,type,class);
数据值/内容;
方法 (method / function) (主要是class类中,详情见后面章节)。
程序执行过程中,不会有重名。
2. 函数调用:
内嵌函数 (build-in):print;abs;help;... 。无需引入“包”即可使用,python默认提供。
import math:math.sqrt(); math.pow(); math.log(); ...
3. import:把一个包引入到当前文件。
4. 算数运算(Arithmetic):加 + ;减 - ;乘 * ;除 / ;整除 // ;余数 %
5. 关系运算(Relational):数字或字符串比大小,小于 < ;大于 > ;等于 == ;不等于 != 。返回bool型,即True & False。
6. 逻辑运算(Logical Operation/Calculus):and ;or ;not。
例如:3>2 and 2<1。
注:逻辑运算符号的两边不一定要是bool型,返回的结果也不一定是bool型,请自行测试学习。
注:运算注意object的type类型;注意算术符优先级;字符串比大小有个字母序(alphabetic)。
复杂语句:函数定义;while;if-else;类定义;...
2020.10.16
计算机组成 冯诺依曼架构 A processing unit that contains an arithmetic logic unit and processor registers (ALU) A control unit that contains an instruction register and program counter (CU) Memory that stores data and instructions External mass storage Input and output mechanisms https://en.wikipedia.org/wiki/Von_Neumann_architecture https://zh.wikipedia.org/zh-hans/%E5%86%AF%C2%B7%E8%AF%BA%E4%BC%8A%E6%9B%BC%E7%BB%93%E6%9E%84 https://www.baidu.com/link?url=WUyrwd9zkEs6eVKyVR9Emg4_pkDsGxJLyrcixtszhapi6XO92QXBlbW-B8f_6dooqxiExzUKir5bCoZhZNvNefxSPO5WSIsI_E-lM2XUgSp5i2i7WY0Ip7tTSwXuy4rEsgtrYO5HOAHElbzI0P1O2mdy-jz9K4-Dx_xvd01rImKxbfrOKyOE4O7cW5U-94xh3XOvQK-8qcWUmN_EnFy2NqauxvnNXHKwWbYN9ZW5JKl8MgTi_HkZ7c6LG75yQ58UZ49MAY98NtbDAVCUXAPruPeO81ozIt36bB1jZOZRQw2PpFK7VV5euTIWOs68_D-i&wd=&eqid=e2294df70000e186000000045f7fd18c 数据和算法 计算 数据 流程图、伪代码:平方根 平方根的其他解法,更优的:https://note.youdao.com/ynoteshare1/index.html?id=828b637ef7ff73a51dd26c1bc59be3e9&type=note
2020.10.12
自我介绍 演示几个平台 对同学的摸底,能力强的同学,不妨做我的基础编程练习,由简入繁,不断积累 大学生活、学习的几点建议 课程介绍(过程化课程) 课堂提问、上机实验(代码和报告)、期中、期末多次考试