第一章 导论
一、基本概念
- 算法:具有有限步骤的过程,依照步骤就能解决问题,就是一个解决方案。
- 编程:使用编程语言将算法编辑为计算机可以理解并执行的过程。
- 数据结构:抽象数据类型的实现。
- 抽象数据类型:从逻辑上如何看待数据及运算,无须考虑具体如何实现,用接口调用即可。
 
二、python基础
1. 数据
- 类:数据的构成及数据能做什么的描述。
- 对象:数据项就是对象,一个对象就是类的一个实例。
1.1 原子数据类型
- 类型:整形和浮点型,int float。
- 数据运算:+,-,*,/,**(幂),%(取余),//(取整)。
- 类型:布尔型,bool。
- 数据运算:and(逻辑与),or(逻辑或),not(逻辑非)
当一个名字第一次出现赋值语句重视,会创建对应的python变量。
1.2 集合数据类型
- 有序集合:列表[]、字符串、元组()
- 无序集合:集set,字典dict
1.2.1 列表
- 概念:由0个或多个指向python数据对象的引用的有序集合,在【】内用","隔开。
- 可应用于任何python序列的运算:
- 重复运算返回的结果是原本列表的重复
 

- 列表提供的方法
- pop会修改列表内容,返回值
- reverse会修改列表,不返回值
 

- range函数:会生成一个代表值序列的范围对象。
- 使用list函数可以通过列表形式看到范围对象的值。
 
list(range(10))
1.2.2 字符串
- 概念:由0个或多个字母、数字和其他符号的有序集合。
- 字符串提供的方法:
  
列表和字符串的区别:列表可以修改、字符串不能 (列表通过下标、赋值操作修改)
元组与列表和字符串的区别:元组与列表非常相似,但是元素与字符串一样不能修改。(元组用“()”表示)
1.2.3 集合
- 
概念:由0个或多个不可修改的python数据对象组成的无序集合。 - 空集:set()
- 集合不允许有重复元素,且用{}表示。
 
- 
集合的运算: 
  
- 
集合的方法: 
  
1.2.4 字典
- 概念:每对元素都由一个键和一个值组成,表示为
- 字典支持的运算:
  
- 字典提供的方法:
- keys、values和items方法均会包含相应值的对象
  
 
- keys、values和items方法均会包含相应值的对象
list函数将字典转换成列表
2. 输入输出
- 输入基本语句:a=input("提示语句:")
2.1 格式化字符串
- 输出基本语句:print("内容")
- 分隔符:print("a","b",sep="---")
- 结束符:print("a","b",end="...")
- 格式化:%是字符串运算符,print("%s,%f" %(item,price))
- 左边部分是模板,右边是用于格式化字符串的值
- 右边的值的个数与格式化字符串中%的个数一样
- 从左到右地被换入格式化字符串
 
- 格式化字符串可用的类型声明
  
- 格式化修改符
- 在%与格式化字符之间
  
 
- 在%与格式化字符之间
3. 控制结构
- 两个结构:迭代和分支
- 迭代:
- while:在给定条件为真时重复执行一段代码
- for:用于重复循环多次
- 用于遍历变量集合中的成员,for item in [1,2,3]
- 在一定的范围内进行有限次迭代,for item in range(5)
- 处理字符串中的每一个字符,for item in 'abc'
 
 
- 分支:
- if elif else
- if
 
 
- 迭代:
- 列表解析式:列表可以通过使用迭代和分支结构来创建
  sqlist=[x*x for x in range(1,11)]
  sqlist=[x*x for x in range(1,11) if x%2!=0]
  [ch.upper() for ch in 'comprehension' if ch not in 'abcde']
4. 异常处理
- 语法错误
- 逻辑错误
- try:..except:...
- raise语句:促发运行时异常
 
5. 定义函数
- 函数的定义:函数名、一系列参数以及一个函数体、函数显式地返回一个值。
- 函数的返回值可以作为另一个函数的参数来使用。
 习题: 通过牛顿迭代法求阶平方根
 输入一个n值,利用以下公式迭代20次,就得到n的平方根。
  
def squareroot(n):
    root=n/2
    for k in range(20):
        root=0.5*(root+n/root)
    return root

6. 定义类
6.1 Fraction类(分数)
- 所有类都应该先提供构造方法 init(self,..)
self 是一个总是指向对象本身的特殊参数,必须是第一个形式参数;在调用方法时,从来不需要提供相应的实际参数;不要直接调用__init__
习题类的相关运算
定义类本身、输出的两种形式、分数的加法
class Fraction:
    def __init__(self,top,bottom):
        self.fenzi=top
        self.fenmu=bottom
    def show(self):
        print(self.fenzi,"/",self.fenmu)
    def __str__(self):
        print(str(self.fenzi)+"/"+str(self.fenmu))
    def __add__(self,otherfracion):
        
        fenzi=self.fenzi*otherfracion.fenmu+self.fenmu*otherfracion.fenzi
        fenmu=self.fenmu*otherfracion.fenmu
        return Fraction(fenzi,fenmu)

6.2 继承
- 继承:使一个类与另一个类相关联
- Python中的子类可以从父类继承特征数据和行为,父类也叫超类。
  
代码格式
#父类
class 类名:
    def __init__(self,参数):
	     self.name=参数
	def 函数名(self):
	    self.name=数值
		return self.name
#子类
class 类名(父类名):
     def __init__(self,参数):
	     super().__init__(参数)
	     self.mininame=None
	def 函数名(self):
		return self.mininame
   

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号