程序设计思想与方法 笔记

本文是关于程序设计思想与方法的详细笔记,涵盖了计算思维、Python基础知识,如数据类型(整数、浮点数、字符串、列表、元组、布尔类型等)、数据的输入输出、流程控制结构(顺序、分支、循环)以及异常处理。笔记还介绍了Python中的函数、模块化编程,包括Tkinter图形编程和面向对象设计。内容深入浅出,适合初学者和进阶者学习。
摘要由CSDN通过智能技术生成

程序设计思想与方法
问题求解中的计算思维
第一章 计算与计算思维
1.3 初识Python
查看Mac中Python安装目录: 终端开启Python → import sys → print sys.path
添加模块到Python搜索路径: /Library/Python/2.7/site-packages
程序的执行方式: 1.直接在bash中 python /Users/liuzf/Desktop/hello.py
2.在解释器中 import hello (设置搜索路径,成功)
3.双击.py文件 (未成功,Windows可行;效果同1)
4.在IDLE中打开hellp.py然后Run Module(按F5)
注意事项: 1.续行符:行末加\,回车,继续写
2.注意缩进表示层属关系,必须
3.交互模式下定义函数,最后一行用空行来结束函数定义
4.在#后加注释内容
5.一般Python程序用main函数:
def main(): #定义
print “Hello.”
#空行结束定义
main() #调用运行
若处理汉字出现问题,则尝试在程序第一行输入 # -- coding: cp936 -*-
*任何时刻中止线程:键盘按下 Control+C 屏幕即显示 KeyboardInterrupt
控制时间: import time 然后 time.sleep(delay) 可以休眠 delay 秒第二章 用数据表示现实世界
2.1 数据和数据类型
并行赋值: x,y = 1,2
Python中的变量:动态类型化:不用int,float等声明确定变量类型
2.2 数值类型
整数类型 int: 1.除法不作四舍五入:11 / 3 = 3
2.求余数:18 % 5 = 3
3.乘方:8 ** 2 = 64
4.表达 x = x+y 可用:x += y;同理 -=,
=,/=,%=
长整数类型 long: 1.自动类型转换:int和long运算,会先将int转换为long
浮点数类型 float: 1.小数点后可以没有数,表示小数位为零:1.
2.浮点型除法11.0/3.0 = 3.6666666666666665
3.浮点数之间不能用 == 比较是否相等,因为有微小误差;
而应看差值是否足够小:abs((1.2-1.0)-0.2) < 0.00000001
4.自动类型转换:混合运算,会先将int、long转换为float
5.手动类型转换 int() long() float();四舍五入 round() (得float)
数学库模块 math: 1.导入math(pi e sin acos atan log log10 exp ceil floor等):
import math
math.sqrt(16)

from math import sqrt
sqrt(16)
2.若要导入所有定义:
from math import *
复数类型 complex: 用j或J表示虚部,而不是i:
定义 c1 = 2 + 4j
则 print c1 得到 (2+4j)
求模 abs(c1) 得到 4.472135955
求虚实部 c1.real 得到 2.0;c1.imag 得到4.0
2.3 字符串类型 str
1.字符串类型的字面值形式:
使用单引号或双引号均可,是为了杜绝歧义错误:He said, “OK”.
转义字符 \ :使用 " ( ’ ) 则不再按界定符意义,而是普通的双(单)引号意义

2.字符串类型的操作:
索引:str[0]访问字符串中第一个字符,str[-1]访问倒数第一个字符,以此类推
切分:str[a:b]访问子串,不指定则为 0 / n :str[:10] str[:] str[5:] str[2:-2]
注意:终点位置不含,即str[i:i]为空串,第i个字符为str[i-1:i]
合并 “Good” + “Bye” ;复制 2 * ”Bye“ ;子串测试 “ok” in “cook” ;求长度 len()
* Python中字符串类型的值不能修改!name = “Tom” name[1]="i” 会报错

3.字符的机内表示:
ord(‘A’) 求A的ASCII码; chr(64) 求ASCII码64对应的字符
直接输入 ‘汉’ 或 ‘Ä’ 等,可以直接查看其在当前系统下的十六进制编码
直接输入 u’汉’ 或 u’Ä’ 等,可以直接查看其在Unicode下的编码
若要混用文字须用Unicode:print u’A\u6c49\xc4B’ 其中 \x 为十六进制数的标志

4.字符串类型与其他类型的转换:
用 eval() 计算字符串形式下的数学表达式
用 int() long() float() bool() str() 互相转换类型

5.字符串库 string (书P54):
capwords(s) count(s,sub) find(s,sub) rfind(s,sub) replace(s,sub,newsub)

2.4 布尔类型 bool
1.关系运算:
有 < > <= >= == !=(或 <>) 六种关系运算
字符串比较按照ASCII编码: “like” < “lake” “B-2” < “f-16”

2.逻辑运算:
三种:且 and 或 or 非 not :优先级 not > and > or

3.布尔代数运算定律:
分配律: a or (b and c)←→(a or b) and (a or c)
a and (b or c)←→(a and b) or (a and c)
De Morgan定律: not (a or b)←→(not a) and (not b)
not (a and b)←→(not a) or (not b)

4.Python中真假的表示与计算:
int long float 可以解释成布尔值:0为False,非0为True
字符串可以解释成布尔值:空串为False,非空为True
a和b为任何表达式: a and b : if a is False then return a, otherwise b
a or b : if a is False then return b, otherwise a
not a : if a is False then return True, otherwise False
(可通过此功能将布尔表达式用作流程控制结构(3.7))
2.5 列表和元组类型
1.列表类型 list :[ xxx , xxx , … , xxx ]
用 len() 求列表成员个数(列表的长度)
列表的成员本身也可以是列表,可以用此来表示数学中的矩阵 [ [11,22] , [33,44] ]
索引、访问子列表、合并、复制的方法,和字符串相同,注意终点位置不含
但字符串不可更改,列表却可以!修改操作: x[2]=‘change’
增加、删除操作: x=x+[‘bonus’] del(x[1:3])
range() 生成整数列表 range( <起点> , <终点> , <步长> ) ,终点位置不含!
列表作为参数传递,函数中的过程永久修改该列表!即便用了不同的参数名称!

2.元组类型 tuple :( xxx , xxx , xxx )
注意,只有一个成员的元组,仍需加上括号,否则解释为单个数值: (8,)
len()、索引、访问子元组、合并、复制的方法,和列表相同,也用方括号
但元组是不可更改(修改)的,只能引用元组变量,这一点上类似字符串
可以通过创建新的元组来迂回达到目的: t = t[ 0:2 ] + (8,)

2.6 数据的输入和输出
1.数据的输入: input(“请输入:”) 接收各种类型的表达式;
输入字符串需要加引号,否则会解释为变量名
a,b,c = input(“xxx”) 要输入 1,2,3 (而不是用空格分隔开)
而使用raw_input(“请输入:”) 则直接全体解释为一个字符串
raw_input 的优势为可以处理空回车,而 input 空回车会报错
\
2.数据的输出: print 输出空白行
print ,, 逗号为一空格,下一个 print 将换行
print ,,, 下一个 print 将不会换行
\
3.格式化输出: 字符串格式化运算: <模板字符串> % ( , … , )
格式定义符: % <宽度> . <精度> <类型字符>
(正宽度右对齐,负宽度左对齐;精度不过高)
例如: %d %f(6位小数) %.4f %s %20s %-20s(左对齐)
举例:"%s gives %s $%d." % (“Tom”,“Jack”,100)第三章 数据处理的流程控制
3.1 顺序控制结构: 开始结束椭圆,输入输出平行四边形,运算长方形,条件测试菱形
3.2 分支控制结构: 单分支结构: if <条件表达式> :
<条件语句体> ←注意此处必须缩进!!
两路分支结构: if <条件表达式> :
<if-语句体> ←注意此处必须缩进!!
else:
<else-语句体> ←注意此处必须缩进!!
多路分支结构: 可以使用嵌套 if-else 语句,但是容易较复杂
最好使用Python的 if-elif-else 语句:
if <条件1> :
<情形1语句体>
elif <条件2> :
<情形2语句体>

elif <条件n> :
<情形n语句体>
else :
<其他情形语句体>
3.3 异常处理: import xxxx 之后重新运行已成功导入的模块: reload(xxxx)
异常处理机制(保持程序结构的清晰):先 try: 然后 except IndexError: …
try :
<语句块>
except <错误类型1> :
<异常处理语句块1>

except <错误类型n> :
<异常处理语句块n>
except :
<默认异常处理语句块>
常见错误类型有: ValueError IndexError TypeError NameError 等
可手动抛出异常: raise ValueError (也可由 try-except 捕获)
可以带有描述信息: raise ValueError, “HaHa!!!”
用户可自定义异常:通过自定义异常类的子类,可自行命名
确保执行相应代码: try-finally (finally后的语句一定会被执行)
综上,一般形式: try-except-finally (如出错,先finally,再except)
try :
<语句块>
except <错误类型> :
<异常处理语句块>

except :
<默认异常处理语句块>
finally:
print “This is final!”
3.4 循环控制结构: 1. for <循环控制变量> in <序列>:
<循环体> ←注意此处必须缩进!!
例1: for i in range(10): ←计数器循环,控制循环次数
print “烦”,
或者:sum = sum + i * i 等等用法
例2: data = [‘a’ , ‘b’ , numx , numy] ←遍历数据项序列
for d in data:
print d,
输出:a b numx numy (元组用法效果相同)
例3: data = [1,2,3,4,5&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值