Python从入门到进阶(人工智能方向)


了解到人想要与计算机交流需要用到编程语言,为什么不直接用自然语言呢?因为自然语言非常复杂。但是因为计算机只懂01010机器语言,所以直接用编程语言同计算机交流,计算机不懂。人与计算机之间就需要有一个翻译官,即编译器(解释器),它可以将编程语言翻译成机器语言。通过这样一个过程人就可以让计算机去做一些事情。


字面量(被写在代码中的固定值):Python的6种数据类型

 PS: 问题输出整数、浮点数和字符串时,print("666"),这种写法是错误的,输出的是字符串了,         应写为print(666);

注释

        单行注释  # ***

        多行注释 一对三引号"""***""""

变量


变量的定义格式:变量名=变量值;

print格式:print(输出值,输出值,输出值,end=" '');

数据类型

 

  如何查看数据类型:type();既可以查看变量也可以查看字面量类型;

数据类型转换

为什么需要转换,举例:1、从文件读取的数字默认为是字符串,如果需要数字类型则要转换

                                        2、input()语句默认输出是字符串类型

                                        3、将数字转换成字符串用以输出到外部系统;

 PS:字符串必须是数字才能转化为整数;浮点数转化为整数导致去精度;

标识符命名规则

数字字母下划线(数字不能写在开头)

运算符(算术运算符和赋值运算符)

算术运算符:加减乘除,%取余;/除;//整除;**平方

赋值运算符:+=;*=;/=;%=;//=;**=;

字符串扩展

字符串的三种定义方法

单引号、双引号、三引号(类似多行注释,支持换行)

引号的嵌套:单引号内可以写双引号字符串;双引号内可以写单引号字符串;使用\进行转义

字符串的拼接

1.使用“+”完成字符串的拼接;

2.注意,拼接操作只适用于字符串字面量,不适合别的字面量;

字符串格式化

语法:“%占位符”,%变量

PS:可以理解为用百分号去占了一个位置,后面的%内容放在占位的地方

常用的占位符有三个:字符串%s;整数:%d;浮点数:%f;

举例:print("%s的年龄是%d岁,现在有%f元钱"%(s,d,f))

格式化的精度控制

使用m.n的方法,其中m控制数字宽度(包括小数点和小数部分);.n控制小数部分位数(会四舍五入)

例:对5.13%7.3f:[][][]5.130

字符串格式化二

语法:f''{变量}{变量}"

特点:1.不理会类型;2.不做精度控制;

表达式的格式化

在无需用变量储存数据时,可以直接输出表达式,如:print("花费了%d元钱"%(a*b))

数据输入(input语句)

input()函数,用一个变量接受,然后输出这个变量;input(“这里可以写提示信息”)

PS:input()函数默认从键盘接收字符串,如果不希望输出字符串类型可以考虑类型转换

Python判断语句

布尔类型和比较运算符

布尔类型字面量True表示真,False表示假;除了可以定义布尔类型外,还可以通过比较运算得到布尔类型

PS:!=和=可以用于字符串的比较

If语句的基本格式

  • if        要判断的条件:

                条件成立时要做的事情

  • if        要判断的条件:

                 条件成立时要做的事情

       else:

                不满足条件时需要做的事情

if-elif-else

  • elif可以有多个的
  • 判断是互斥且有序的,上一个满足后面的就不需要判断了
  • 可以在条件判断中,直接写input语句,这样会节省代码量

 判断语句嵌套

  • 生成随机数字:导入包import random    num=random.randint(1,10)PS:包含1和10
  • PS:选中(取消)多行注释快捷键:ctrl+/

Python循环语句

基础语法:

while 条件:

        条件满足时执行的操作

PS:一定要设置循环终止条件

while循环的嵌套应用

语法:while 条件1:

                条件1满足需要做的事情

                while 条件2:
                        条件2满足需要做的事情

案例:99乘法表

PS:每一个print语句都是自动换行的,制表符 \t 等价于Tab键,可以让多行字符串进行对齐

for循环的基础语法

  • while与for之间的区别:while循环条件是自定义的,程序员自行控制循环条件

                                             for循环是一种轮询机制,是对一批内容进行“逐个处理”

  • 语法:

                       for   临时变量  in  待处理数据集:

                                        满足循环条件是执行的代码

ps(把待处理数据集中数据放到临时变量中,for循环能循环多少次只取决于待处理数据集中有多少份数据供你处理)

for循环练习案例:数一数有多少个a
name="itheima is a brand of itcast"

for循环的range语句(range语句可以生成数字序列)

for 临时变量 in 待处理数据集(ps:待处理数据严格来称之为序列类型,序列:内容可以一个一个依次取出的一种类型,如:字符串、列表、元组等):

  • 语法1:range(num)    作用:获取一个从0开始到num结束(不包含num)的数字序列
    •     eg range(5)可取  【0,1,2,3,4】
  • 语法2: range(num1,num2)  作用:获取一个从num1开始到num2(不包括num2)的数字序列
  • 语法3: range(num1,num2,step)
    • eg:  range(5,10,2)=【5,7,9】

range练习:定义一个数字变量num,并使用range()语句,获取从1到num的序列,使用for循环遍历它,在遍历过程中统计有多              少 偶数出现

   循环中断continue 和break关键字控制循环 

  •    continue 暂时跳过某次循环,直接进行下一次
  •     break退出循环,不再继续

函数

函数定义

  • 语法:def  函数名(传入参数):

                        函数体

                        return 返回值  

        PS:传入参数和返回值是可以省略的,换行符\n

函数的参数

        传入参数功能:在函数进行计算时,接受外部(调用时)提供的数据

函数的返回值

  •         返回值需要有一个参数去接收

        PS:函数体遇到return后,后面的代码就不再执行了

  •       函数的返回值none类型:无返回值的函数,实际上返回的是none
    • none作用:函数返回值;用在if判断中,none等价于false;用于声明无内容的变量

函数的说明文档

在函数体内写三行注释

变量在函数中的作用域  

  • 局部变量

                在局部变量前面加上global变量名,则该局部变量变成了全局变量(PS:这个知识点看似不重要其实非常重要eg:银行账户)

                并且必须严格是global变量名,不能为了省事global表达式

  • 全局变量

数据容器

数据容器是什么

  • 类似数组,容纳多份数据
  • 一种可以容纳多份数据的数据类型,容纳的每一份数据称为1个元素,每一个元素,可以是任意类型的数据,如:字符串、数字、布尔类型
  • 数据容器根据特点的不同,如:
    • 是否支持重复元素
    • 是否支持修改
    • 是否有序等分为了列表、元组、字符串、集合、字典

数据容器(List)

基本语法

  1. [元素1,元素2,...]
  2. 变量名称=[元素1,元素2,......]
  3. 定义空列表 
    1. 变量名称=[]
    2. 变量名称=list()

PS:列表可以存储不同的数据类型,且支持列表嵌套

列表的下标索引

  • 语法:列表名[下标]     作用:从0开始,从左到右
  • 或者反向索引,从-1开始从右向左
  • 嵌套列表的下标索引:列表名[1层下标][2层下标]

列表的常用操作(方法)

  • 列表的查询功能
    1. 查找某元素的下标   语法:列表.index(元素)         ,如果查找的元素不存在,系统报错
    2. 修改特定位置(索引)的元素值    语法:列表[下标]=想要修改成的值
    3. 插入元素        语法:列表.insert(下标,待插入元素值)        ,在指定位置上插入指定元素
    4. 追加元素(将新元素加入到列表的尾部)     语法:列表.append(元素)
    5. 列表尾部加入一批元素       语法:list.extend(其它数据容器)
    6. 删除列表元素      语法1:del 列表名[下标]       语法2:列表.pop(下标)
    7. 删除某元素在列表中的第一个匹配项        语法:列表.remove(元素)
    8. 清空列表内容     语法:列表.clear()
    9. 统计某元素在列表的数量      语法:列表.count(元素)
    10. 统计列表内有多少元素       语法:len(列表)
    • 列表的遍历
      1. while循环遍历   语法  index=0  while index<len(列表):    元素=列表[index]   对元素进行的处理   index+=1
      2. for循环遍历       语法: for 临时变量 in 数据容器:对临时变量的处理

数据容器(元组)

  • 为什么使用元组?因为列表可以修改元组不可以修改
  • 元组定义
    1. (元素,元素,...,元素)
    2. 变量名称=(元素1,元素2,...)
    3. 定义空元组:变量名称=();变量名=tuple()
    4. 元组也可以嵌套
  • 元组的相关操作
    1. 下标索引取出内容
    2. index(元素)查找元素索引
    3. count(元素)统计元素出现次数
    4. len(元组名)统计元组元素数量

数据容器(字符串)

  • 同元组一样,字符串是无法修改的数据容器;只可以存储字符串类型数据
  • index()方法
  • str=" "

字符串的替换

  • 语法:字符串.replace(字符串1,字符串2)
  • 功能:将字符串内全部字符串1替换成字符串2,注意:不是修改字符串本身,而是得到一个新的字符串

字符串的分割

  • 语法:字符串.split(分割字符串)
  • 功能:按照指定的分割字符串,将字符串划分为多个字符串,并存入到列表对象;注意:字符串本身不变化,只是得到一个列表对象

字符串的规整操作

  • 去前后空格以及回车符
  • 语法:字符串.strip()  ;  字符串.strip(字符串)

统计字符串中某字符串的出现次数

  • 语法:字符串.count(某字符串)

数据容器(序列)的切片

  • 序列:内容连续,有序,可使用下标索引的数据容器,如:列表,元组,字符串
  • 切片:从一个序列中,取出一个子序列 
  • 语法:序列[起始下标(可省略):(冒号不可省略)结束下标(不包含,可省略):(可省略)步长(可省略)]
    •         PS:当步数用负数表示,意味着反向取(注意起始、结束下标也要反向标记);此操作不影响原序列
    • PS:str[::-1]   作用:将str字符串逆转

集合的定义和操作

  • 为什么用到集合?因为列表、元组、字符串支持元素重复、有序;而集合最主要的特点是不支持元素重复(自带去重功能),并且内容无序
  • 语法:{元素,元素,......};变量名称={元素,元素,......};空集合:变量名称=set()
  • PS:集合是无序的,所以不支持下标索引,但是和列表一样,是允许修改的
  • 添加新元素   语法:集合.add(元素)
  • 移除元素    语法:集合.remove(元素)
  • 从集合中随机取出元素   语法:集合.pop()
  • 清空集合    语法:集合.clear()
  • 取出两个集合的差集      语法:集合1.difference(集合2)
  • 消除两个集合的差集      语法:集合1.difference_update(集合2)    结果:集合1和集合2相同的元素被删除
  • 2个集合合并    语法:集合1.union(集合2)        结果:得到新集合
  • 统计集合元素数量    语法:len(集合名)
  • 集合的遍历:因为不支持下标索引,所以不能使用while循环

数据容器(dict字典)

  • 定义:  {key:value,key:value,......}     变量名={key:value,....}   空字典  变量名={ }  或   变量名=dict()
  • PS:字典和集合一样无法使用下标索引,但是可以通过key值取得相应的value       字典名[key值]
  • 字典的嵌套     字典的key和value可以是任意值,但是key不能是字典类型     嵌套取值时需要用两层,每层都只能用key,不能用下标哦
  • 字典的常用操作
    1. 新增元素   语法:字典名[key]=value       ps:如果key是重复的,该操作等同于更新
    2. 删除元素   语法:字典名.pop(key)            结果:获得指定key值的value,同时字典被修改
    3. 清空元素    语法: 字典名.clear()
    4. 获取全部的key    语法:字典名.keys()
    5. 统计字典内元素数量      语法:len(字典名)

数据容器的通用操作

  • 带参函数
    1. len(容器):统计容器中元素个数
    2. min(容器):找出容器最小元素,对应max
  • 容器类型转换
    1. 容器转列表:字符串转列表,则每个元素都是字符串类型;字典转列表,最后只剩下key值
    2. 容器转元组:同上
    3. 容器转字符串
    4. 容器转集合:重复的数值被去重;字典只剩key值
  • 容器通用排序功能

        sorted(容器名,[reverse=TRUE])     PS:排序结果为列表对象,如果想要反向排序,只需要后面是true即可

函数进阶

  • 函数多返回值:如果函数有两个return,则一般先执行前一个,yinweireturn以后的语句不会执行,解决方案:

                         return 返回值1,返回值2     然后有多个变量接收返回值,如:x,y=函数()

  • 函数的多种传参方式
    1. 位置参数:调用参数时,根据函数定义的参数位置来传递参数PS:传递的参数和定义的参数顺序及个数必须一致
    2. 关键字参数:函数调用时通过”键=值”的形式传递参数
      1. eg:def user(name,age,gender)   调用时:user(name="小米",age=20,gender="女")、
      2. ps:函数调用时如果有位置参数和关键字参数,位置参数一定要放在关键字参数的后面,关键字参数顺序无要求
    3. 缺省参数(默认参数)
      1. eg:def user=(name,age,render="男")   调用时  user("mike",18)默认性别是男;user("Amy",10,"女")则修改了默认参数
      2. PS:默认值必须是放在后面的参数位置
    4. 不定长参数(可变参数) 作用:当调用函数时不确定参数个数时,可使用不定长参数传参,又分为两类
      1. 位置传参def user(*args):传进的所有参数都会被args变量收集
      2. 关键字传递:def user(**kways)  传入的参数是“键=值”形式传入的
  • 匿名函数
    1. 函数作为参数传递:其实就是传入函数的运算逻辑
    2. lambda匿名函数:函数定义中用def可以定义有名称的函数,这个函数在后面可以可以通过名字多次调用;而用lambda可以定义匿名函数(只能调用1次),语法:lambad 传入参数:函数体(PS:函数体只能是一行代码)

文件操作

文件编码概念

  • 编码技术:翻译的规则,记录了如何将内容翻译成二进制,以及将二进制翻译回可识别内容

文件读取

  • 文件操作步骤:打开文件-->读写文件---->关闭文件
  • open():打开一个已经存在的文件或者创建一个新文件
    1. 语法:open(name,mode,encoding)
      1. name:要打开的目标文件的名称
      2. mode:设置打开文件的模式:只读,写入、追加等
      3. encoding:编码格式
      4. eg:f=open("python.txt",'r',encoding='utf-8'),则此时f算是一个文件对象,拥有属性和方法,可以使用对象.属性;对象.方法对其进行访问
      5. mode常用的三种基础访问模式
        1. r:只读方式打开文件,指针在文件开头
        2. w:打开文件用于写入。如果文件已经存在从头开始编辑,原有内容会被删除。如果文件不存在,创建文件
        3. a:打开文件用于追加内容
  • 读操作相关方法
    1. read方法:  文件对象.read(num)    Num表示要从文件读取的数据长度,如果没有传入num,那么就表示读取文件中所有的数据
    2. readlines()方法 : 按照行的方式将整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
    3. PS:如果在程序中多次调用read()方法,那下一次调用read()方法会在上一次调用read()方法的结尾处;readlines()方法会把换行符也读到(意思是会输出\n)
    4. readline()方法:一次读取一行内容
    5. for循环:for line in f:line就表示这个文件的每一行
    6. close()方法:关闭文件对象
    7. with open(“文件名”,“读写方式”)asf : f.readlines()  作用:在读操作结束后自动关闭文件 
  • 文件的写操作
    1. 打开文件: f.open("","","")
    2. 文件写入:  f.write("写入的内容")
    3. 文件内容刷新:f.flush()
    4. PS:直接调用write只是把内容写在内存的缓冲区中,当调用flush的时候,内容会真正写入文件(好处:避免频繁的操作硬盘)
    5. 注意:f.close()内置了flush()方法
    6. 实践发现:写操作会从头开始写,这样会把原内容覆盖掉
  • 文件的追加操作
    1. 语法和写入一样,只不过需要将文件读写方式改为'a'

Python异常、模块与包

异常

  • 异常的捕获语法:   try:可能发生错误的代码   except:如果出现异常执行的代码
  • 捕获指定异常方法:try:可能发生错误的代码   except  异常类型  as 变量:print(变量)
    1.    异常类型:NameError、ZeroDivisionError、list index out of range
  • 捕获多个异常:异常类型用元组包起来
  • 捕获所有异常:try:可能发生错误的代码   except Exception as e:print(e)
  • 异常的else:  try:可能发生错误的代码   except:如果出现异常执行的代码  else:没有异常执行的
  • 异常的finally:语法同else,表示的是无论是否发生异常都要执行的代码

Python模块

  • 模块:就是一个python文件,里面有类、函数、变量等,我们可以导入模块使用(ctrl+鼠标点击就可以查看这个文件)

模块的导入方式

  • 【from 模块名】import【模块|类|变量|函数|*(导入模块的全部内容)】【as  别名】
  • PS:中括号内的内容可写可不写
  • 语法: import 模块名   模块名.功能名()  作用:使用模块内部定义的函数
    • eg:之前使用的random模块
  • 语法:from 模块名 import 功能名    功能名()    作用(针对某个功能使用)
  • 语法:from 模块名 import *   功能名()    作用:导入模块的全部功能
  • 语法:from 模块名  as  别名     作用:模块定义别名     
  • 语法:from 模块名  import 功能名  as  别名     作用:功能定义别名   

自定义模块

  • 就是新建一个.py文件,在这个文件里正常写代码,然后在另一个文件里import这个模块,就可以使用自定义模块的一些功能
  • PS:当导入多个模块是,且模块内有同名功能,当调用这个同名功能的时候,调用到的是后面导入的模块的功能

安装第三方包

没完成预设目标,但是今天是1024,发篇博客会的一个勋章。

今天还是霜降,柿柿平安,明天开始改头换面。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值