python语言基础

编程思维
模块化思维:确定模块接口,封装功能
规则化思维:把过程抽象为规则,使计算机自动执行
化繁为简: 将大功能变为小功能组合,分而治之

代码复用和函数递归

  • 代码复用 (模块化设计)
    代码资源化:程序代码是一种用来表达计算的”资源“
    代码抽象化:使用函数等方法对代码赋予更高级别的定义
    代码复用:同一份代码在需要时可以被重复使用,抽象化的结果
    函数和对象是代码复用的两种主要形式:
    函数:将代码命名在代码层面建立了初步抽象
    对象:属性和方法,<a>.<b> and <a>.<b>() 在函数之上再次组织进行抽象

  • 递归 (函数中调用函数本身的方式)

         类似数学归纳法
         递归的实现:
             函数+分支语句
             两个关键特征
                 链条:                 #当前 n 和 n-1 之间的关系
                 基例:                	 #终止递归的条件
         def fact(n):                  	# n 的阶乘的函数
             if n == 0:
                 return 1
             else:
                 return n*fact(n-1)
         实例:汉诺塔
             count = 0
             def hanoi (n,src,dst,mid)   #n plate qunlity
                 global count
                 if n == 1 :                                     #基例部分,终止递归的条件
                     print ("{}:{} ->{}".format(1,src,dst))
                     count += 1
                 else :                                          #递归链条
                     hanoi(n-1,src,mid,dst)
                     print("{}:{}->{}".format(n,src,dst))
                     count +=1
                     hanoi(n-1,mid,dst,src)           
    

调用相关
#不会出现函数重名的问题

import <库名>
<库名>.<函数名>(<函数参数>)      

#容易产生库中函数与自定义函数重名的问题

from <库名> import <函数名>
from <库名> import*
	 <函数名>(<函数参数>)  
import <库名> as <库别名>
    <库别名>.<函数名>(<函数参数>)

分支结构
#多分支条件之间的覆盖问题是重要问题
#程序运行正常,但不正确,要注意多分支
#分支结构是程序的重要框架,读程序先看分支

if <条件1>:
    <语句快1>
elif <条件2>:
    <语句快2>
else:
    <语句块n>      
操作符 : <     <=      >=      >       ==      !=
保留字 : and   or      not

异常处理

try :
    <语句快1>                      # 正常执行
except <异常类型>:                 #可选,如果填写,则只会处理该类型的异常
    <语句快2>                      #出现异常时执行
else :                            #不出现异常时执行
    <语句块3>
finally :                          #一定会执行 
    <语句块4>

循环语句

遍历循环
    for <循环变量> in <遍历结构> :  # <遍历结构> 包括字符串,列表,文件,元组,字典等等
        <语句块>

    for <变量> in range (N) :     # 计数循环 N 次
        <被循环执行的语句>
    for <变量> in range (M,N,K):
        <被循环执行的语句>
    
    for c in s :                   # 字符串遍历循环    s 是字符串,遍历字符串每个字符,产生循环
        <语句块>
    
    for item in ls :                #列表遍历循环     ls 是一个列表,遍历其每个元素,产生循环
        <语句快>
    
    for line in fi :                #文件遍历循环     fi 是一个文件标识符,遍历其每行,产生循环
        <语句快>
    
    range()函数
        range(N) #产生0到N-1的整数序列,共N个
        range(M,N)  # 产生M到N-1的整数序列,例 range(2 , 5)  产生2,3,4整数序列

无限循环
    while <条件> :    反复执行语句块,知道条件不满足时,跳出循环
        <语句块>
        
brake and continue
    brake :跳出循环结构
    continue :  跳出当次循环,执行下一次循环
    
循环扩展
    for i in s  ;
        <语句块1>
    else :          #语句块1中有continue关键字或者正常执行时,都会执行else语句。但是如果语句1中执行了break语句,语句块2将不会执行。
        <语句快2>

数据类型

  • 整数类型

     可正可负,没有取值范围限制
     pow(x,y) 函数:计算 x**y 
     十进制 1234 二进制 0b101 八进制 0o437 十六进制 0x65
    
  • 浮点数类型

     浮点数间运算存在不确定尾数。 
     >>> 0.1+0.2          result : 0.30000000000000004
     >>> 0.1 + 0.2 == 0.3 result :  False
     
     round(x,d) : 对x四舍五入,d是小数截取位数 # 浮点数间运算及比较用 round() 函数辅助
     4.3e-3 值为 0.0043    9.6e5 值为 960000.0
    
  • 复数类型 (only python have this type)

    数值运算操作符

     x + y   x - y   x*y     x/y     x//y (整数除)      -x(负数)     x%y (结果为余数)      x**y (幂运算,y可以为小数)
     类型间可以进行混合运算,结果为最宽的类型    3 + 4.0 = 7.0
     
     数值运算函数
         abs(x)          绝对值                 abs(-10.01) result: 10.01
         divmod(x,y)     商余(x//y , x%y)       divmod(10 , 3) result : (3,1)
         pow(x,y[,Z])    幂余(x**y)%z           pow(3,pow(3,99),10000) result : 4587   # 不使用10000这个参数,计算量将非常大,普通计算机无法计算
         round(x[,d])    四舍五入               round(-10.123 , 2) result : -10.12
         max(x1 ,x2 ,x3,...) 最大值
         min(x1 ,x2 ,x3,...) 最小值
         
         int(x)
         float(x)
    

    字符串类型及操作

     表示方法有三种: 单引号'里面出现的双引号当做字符处理'  双引号"里面出现的单引号当做字符处理"   三引号 '''里面出现的单引号和双引号为字符的一种''' or """第四种方式"""
     字符串序号:str = '0123456789:' [0~10] 或者 [-12 ~ -1]
    
  • 字符串的使用

         使用 [] 获取字符串中一个或多个字符
         索引:返回字符串中单个字符   <字符串>[M]
         切片:返回字符串中一段字符子串 <字符串>[M : N]    #[:N] 从开头   [M:] 到结尾
             <字符串>[M:N:K]    根据步长K对字符串切片
             >>>"012345678910"[2:8:2]  result : '246'
             >>>"0123456789"[::-1]     result : '9876543210'
             
         转义符 \ : 
             表达特定字符的本意 
             形成一些组合,表达一些不可打印的含义
             "\b"    回退
             "\n"    换行(光标移动到下行首)
             "\r"    回车(光标移动到本行首)
    
  • 字符串的操作符

         x + y           连接两个字符串
         n * x 或 x * n  复制n次字符串x
         x in s          如果x是s的子串,返回 True ,否则返回 False
    
  • 字符串处理函数

         len (x)         返回字符串x的长度                   len("一二三四56")   result : 6
         str (x)         任意类型x所对应的字符串形式         str(1.23)    result : "1.23"     str([1,2])  result : "[1,2]"
         hex(x) or oct(x)将十进制数转换成小写形式的字符串     hex(425)    result : "0x1a9"    oct(425)    result : "0x651"
         
         Unicode编码,Python字符串的编码方式。(0~1114111 (0x10FFFF))每个编码对应一个字符
         chr(u)           x 为 Unicode编码,返回其对应字符
         ord(x)           x为字符,返回其对应的Unicode编码
         
         方法
             str.lower() or str.uppper()
             str.split()
             str.count(sub)                  "a apple a day".count("a")  result : 4  # 返回子串sub在str中出现的次数 
             str.replace(old , new)          "python".repalce("a" , "123") result : "pytho123"
             str.center(width[,fillchar])    "python".center(20,"=") result : '=======python======='
             str.strip(chars)                "= =python=  =".strip(" =np") result: "ytho"
             str.join(iter)                  ",".join("12345") result : '1,2,3,4,5'    
    
  • 字符串类型的格式化

             <模版字符串>.format(<逗号分割的参数>)
             "{}:计算机{}的CPU占用率为{}%".format("2020-3-14" , A , 10)
             format() 方法的格式控制
             :<填充> <对齐> <宽度>   < , > < .精度 > <类型>        #<对齐> : < 左对齐   >右对齐   ^居中对齐    < , > 千位分隔符
            >>> "{0:=^20}".format("python")  result : '=======python======='
            >>> "{0:*>20}".format("bit")     result : '*****************bit' 
            >>> "{:10}".format("BIT")        result : 'BIT       '
            
            >>>"{0:,.2f}".format(12345.67889)                        result : '12,345.68'
            >>>"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)     result : '110101001,Ʃ,425,651,1a9,1A9'  # <类型>  b 二进制 c unicode字符 d 十进制 o 八进制 x 小写十六进制 X 大写16进制 
            >>> "{0:e},{0:E},{0:f},{0:%}".format(314.15)               result : '3.141500e+02,3.141500E+02,314.150000,31415.000000%'   # <类型> e  E f %
    

组合数据类型

  • 集合类型:集合是多个元素的无序组合

     集合类型与数学中的集合概念一致
     元素之间无序且唯一,不存在相同元素
     集合元素不可更改,不能是可变数据类型 如列表就不行
    例
         A = {"python", 123 ,(a,b,c,d)}  #使用{}建立
         B = set("pypy123")              #使用set()建立
    操作符
      S | T  并
      S - T  差 
      S & T  交
      S ^ T  补
      S <= T 或 S < T     返回 True / False  判断 S 和 T 的子集关系
      S >= T 或 S > T     返回 True / False  判断 S 和 T 的包含关系
      增强操作符
    处理方法
     S.add(x)
     S.discard(x)    移除元素x,如果集合中不存在x , 不报错。
     s.remove(x)     移除元素x,如果x不存在于集合中,产生KeyError异常
     s.clear()       移除S中所有元素
     s.pop()         随机返回S的一个元素,若S为空产生KeyError异常
     s.copy()        返回集合S的一个副本
     len(S)          返回集合S的元素个数
     x in S
     x not in S      
     set(x)          将其他类型变量x转变为集合类型
     
     应用场景
     最典型的使用,应用set()进行数据去重  
    
  • 序列类型:具有先后关系的一组元素

      基础
         包含 字符串"",元组() or null ,列表 []    #元组的元素创建后不可改变
     通用操作符
         x in s
         x not in s 
         s + t 
         s*n / n*s
         s[j]
         s[i:j:k]
     通用函数和方法
         len(s)
         min(s)
         max(s)
         s.index(x)  /   s.index(x,i,j)  #第一次出现的位置
         s.count(x)      # 出现 x 的总次数
     应用场景
         最主要最用:表示一组有序数据,并操作它们
             元素遍历
         元组用于元素不改变的应用场景,更多用于固定搭配场景
             数据保护
         列表更加灵活,它是最常用的序列类型
    

函数

定义:是一段代码的表示
    函数是一段具有特定功能的,可重用的语句组。可以重用。
    def <函数名> (<必要参数>,<可选参数>) :        # I 输入
        <函数代码>                                 # P 处理
        return <返回值1> , <返回值2>               # O 输出  返回多个返回值时,为元组类型        
    可变参数传递
        def <函数名> (<参数> ,*b):                #参数总数量不确定            
    局部变量和全局变量
        基本数据类型,局部变量会在函数调用完,被计算机释放掉。
        基本数据类型,函数内部使用全局变量,需要在函数体内声明    global s 
        组合数据类型,如果一个组合数据类型在函数中创建了,该变量为局部变量,如果函数内未创建而只是调用外部变量,则该变量无需声明默认为全局变量。            
    lambda函数
        特定使用,非常规使用
        <函数名> = lambda <参数> : <表达式>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值