Python学习笔记--Jupyter

写在开头:

1. 本文的实例均采用网页版Python编辑器—Jupyter Notebook。In[ ]表示键盘输入,下行/Out[ ]为输出结果

2. Jupyter Notebook中的代码块采用Shift+回车键运行。

3. 代码块注释语句 #

  标题语句 ###,内容*(选择markdown

4. 编程时,如果想要利用上文的变量、函数等,必须先执行上文的代码块,才可以使用。

3. Anaconda安装以及配置环境变量可以参考:

Anaconda安装以及配置环境变量 - 知乎 (zhihu.com)

4. 解决Jupyter-notebook不自动跳转浏览器的详细方法可以参考:

解决Jupyter-notebook不自动跳转浏览器的详细方法 - 知乎 (zhihu.com)

目录

一、Python基础

二、Python数值运算

三、几种常用的变量类型

四、Python字符串

五、Python中的索引

六、Python中的列表(List)

七、Python字典

八、Python集合

九、Python的赋值机制

十、Python判断结构

十一、Python循环结构

十二、Python函数

十三、Python包

十四、Python异常

十五、Python文件操作

十六、Python中的类(面向对象编程)

十七、Python时间


一、Python基础

1. 输出语句:print(‘想要原封不动输出的文本内容’)或者是print(“想要原封不动输出的文本内容”)

2. 不写print也可以默认打印,前提是一个代码片段的最后一行

二、Python数值运算

1. 四则运算

(1). 加减法:可用print语句输出结果;也可以直接输入计算表达式计算结果

 (2). 乘法:可用print语句输出结果;也可以直接输入计算表达式计算结果

(3). 除法:分为取整(/)和取余(%);可用print语句输出结果;也可以直接输入计算表达式计算结果

(4). 乘方:x**m,表示xm次方

三、几种常用的变量类型

Int(整型)+Float(浮点型)+str(字符串类型,采用‘  ’声明)+bool(布尔类型)

1. 先得定义变量,才可以使用变量;Python自动判断数据类型,并且可以输出变量的值

2. type(tang) 打印变量的类型

3. 变量类型的转换

(1). 此处将上述定义的float类型的tang,转化为int型为例

(2). 将数值类型的字符串类型转化为float

注:非数值型的字符串无法转化为字符型/浮点型

(3). 可直接输入表达是判断真或假

4. 表达式中运算符的先后顺序

( ) --> ** --> */  --> +和-

5. 基本的数值操作

(1). 绝对值

(2). 取整(四舍五入)

(3). 求最值( min( )—求最小值,max( )—求最大值 )

(4). 科学记数法(e要算10的多少次幂)

(5). 十六进制

四、Python字符串

1. 字符串基础

(1). 字符串的声明

(2). +表示拼接

(3). *表示n个、n倍(n是泛指)

(4). len( )求字符串的长度即元素个数

2. 字符串的基本操作

(1). split( ),表示切分,成为一个list(列表)结构。默认以空格切分

指定分隔符切分

(2). join( ),表示组合,默认组合后按照空格组合

(3). replace(),表示对指定部分的替换操作

方法的本质在程序中创建一个副本,相当于是对副本操作,并不会改变实际的值。输出字符串tang后仍然为之前的值

可以通过将修改的副本赋给一个新开辟变量空间的变量。这样会将修改“保存”下来。

下述的方法也都是同理

 

(4). upper( )表示将字母全部转化为大写字母

(5). lower()表示将字母全部转化为小写字母

 (6). strip()表示取消左右两边空格符(字符串内部的空格不会取消

①. lstrip()表示去掉左边的空格

②. rstrip()表示去掉右边的空格

(7). 格式化操作,对传入的参数值按照指定的格式格式化

①. 可以指定传入参数的显示顺序

②. 可以对传入参数赋上具体的值

注:参数的名称不能相同,必须唯一

(8). %作用是参数和值的一一匹配

五、Python中的索引

1. 索引介绍

(1). 索引可以理解为所处位置的一种编号,一种下标

(2). 从前往后索引下标从0开始

(3). 从后往前索引下标从-1开始

(4). 正数表示从前往后数,负数表示从后往前数

2. 索引基础

(1). 通过索引进行定位

(2). 索引越界

(3). 索引切片(:表示左闭右开的区间)

哪边不写表示哪边取到所有

①. 哪边不写表示哪边取到所有

 ②. 取到前面所有

 ③. 左右都取全部

④. ::n,表示每隔n个取一个值,简易理解为+n取,0,n,2n,…  此处拿n=2为例

六、Python中的列表(List)

1. 列表介绍

(1). 通过[  ]来创建一个list结构

(2). 里面放任何类型都可以的,没有一个长度限制

①. 存放整型

②. 存放字符串型

③. 存放混合类型

2. 列表基础

(1). 列表的声明

①. 光声明,不赋值

②. 声明的同时赋值

3. 列表的基本操作

(1). len()求列表长度,即列表当中的元素个数

(2). 列表的连接操作, +

 (3). *表示列表的倍数操作

(4). 列表的索引

(5). 赋值操作

(6). 替换操作

(7). del表示删除操作(会对列表的原件操作,不是对副本操作)

从第三个开始删除,一直删除到最后

(8). in表示判断当前的数值在不在列表中

not in 表示“不在”

(9).  list当中再放一个list

查找内层列表中的元素时,先找第一层,再找内层

(10). 计数操作

(11). 求指定元素在列表当中的索引

当所要查找索引的元素不存在于列表中时,会报错

(12). append()实现对列表的添加。执行一次,添加一次。每次只能添加一个元素

添加一个列表进去

(13). inert()表示在指定的位置进行插入操作

(14). remove()表示删除指定元素

若有多个相同的元素,则会把多个元素当中的第一个元素删除

(15). pop()表示弹出列表中的元素,原列表中也就不存在该元素

(16). sort()表示按照从小到大的顺序排序,输出的仍为列表形式

可以将旧的、无序的列表作为参数传入sort()方法中,将排序结果传入一个新的列表中,使得在内存空间中开辟一个新的空间赋给新列表

(17). reverse()表示倒序操作

七、Python字典

1. 字典介绍

(1). 通过{}定义

 (2). 另一种定义方式

 (3). 字典结构:key – value(键值对),其中键是唯一的。

对指定键赋指定值

 另一种较直接的方式

 2. 字典基础

(1). 通过键找到value

 必须是存在的键,不存在的键会报错

(2). 对键的重新赋值/更新操作

 (3). 初始化一个字典,在字典中没有顺序可言

3. 字典的基本操作

(1). 字典中的值可以是列表形式

 (2). 字典也可以作为一个值,进行相互的嵌套

 

 (3). 对键值进行值的修改操作

 

 (4). get()用于取出键所对应的值

 对于字典中不存在的值可以通过get()方法临时创建一个

 但是这种操作并不会改变原有的字典

 (5). pop()用于值的弹出,并且在原字典中删除

 (6). del用于键值对的删除操作

 

 (7). update()更新操作:对于字典中已有的键,将参数的值赋给原有的字典(更新);对于不存在的,进行插入操作,默认插入最后一个位置(插入)

 (8). in用于判断键是否在字典当中

 (9). keys()方法用于取出字典当中的所有键

 (10). values()方法用于取出字典当中的所有值

 (11). items()方法用于打印字典中所有的键值对

八、Python集合

1. 集合介绍

(1). 通过{ }表示

 (2). 另一种定义方式

 (3). 会保留下来唯一的那些元素(去重)

 (4). “}”写key-value对,表示一个字典;直接写值,表示一个set集合

2. 集合基础操作

(1). 首先定义两个集合

(2). 求集合a和集合b的并集

①. union()方法

 ②. | 方法

(3). 求集合a与集合b的交集和集合b和集合a的交集

①. intersection()方法

 ②. & 方法

 (4). difference()方法

 a集合来说,b里面哪个元素没有

 另一种方式

 b集合来说,a里面哪个元素没有

 另一种方式

 (5).  issubset()方法求子集

 b是a的子集

 a不是b的子集

 (6). 长度比较

 ①. a与b互相比较

 ②. 自我比较

 小于等于等同于“或”的关系,只要满足小于/等于就为真

 (7). add()方法用于向集合中插入值

 (8). update()方法用于插入群体值

(9). remove()方法用于删除元素

 

 此处的1指的是元素值,不要误认为是索引

 (10). pop()方法表示弹出操作。与之前所学不同的是,不能填入任何参数。并且在原集合中删除

 默认弹出第一个元素

九、Python的赋值机制

1. 变量的赋值传递

 其中tang和WSW在内存空间中指向了同一处地址,通过二者的id值来判断

很显然二者是一样的

可以通过is方法判断二者是否是一样的东西

 2. 设立一个新的变量,指向内存中的领一块区域

 

 判断二者是否是一样的东西

很显然不是

3. 给不同的变量赋相同的值再来研究

 赋值一样,id不同

 很显然二者是不一样的两个东西

 4. 再看一种特例

给不同的变量赋相同的值,但是此处的值要比第3点的值小的多

 再来判断二者是否是一样的

很显然,我们发现二者居然是同一个东西,或者说指向了同一处的内存空间

现象解释:对于比较大的值,会分别构建两块不同的内存空间存储;而对于比较小的值,会指向同一个内存空间。这是由于在Python中为了内存的高效,对于比较小的数,会采用重用的机制

十、Python判断结构

规则抢先知:在Python中不存在类似Java语言和C语言当中的{ }来限定起始截止。通过缩进来判断是否属于方法体的语句。(4个空格=1个tab)

1. if结构

如果符合if提供的条件表达式,则会输出if判断中的语句

2. if-elif-else结构

如果不符合if提供的条件表达式;则会去判断elif提供的条件表达式是否符合;若依旧不符合,则会去执行else当中提供的语句

3. if与列表结合

 4. if与字典结合

十一、Python循环结构

规则抢先知:与选择结构一样,在Python中不存在类似Java语言和C语言当中的{ }来限定起始截止。通过缩进来判断是否属于方法体的语句。(4个空格=1个tab)

在循环语句后,加上“:”表示循环语句执行开始

1. while循环

while后加循环的条件表达式。满足表达式则进入循环,不满足表达式则会跳出循环。

 while与集合结合应用时,集合不能为空

 当集合中的元素全部弹出时,循环停止

2. for循环

语法:for 变量 in 范围、区域

(1). 集合

 

 一个一个遍历,name等于其中的一个具体的值

(2). range相当于从0开始取多少个

 (3). continue表示跳出当前循环,转而执行下一次循环

 (4). break表示跳出当前循环并且提前终止整个循环

十二、Python函数

1. 算术表达式的计算

 Python中没有很复杂的格式要求,赋值后计算,可以直接输出计算后的结果

2. 定义函数并且调用函数

(1). 函数的声明使用def

(2). 在函数名后使用 :来说明函数体的开始

(3). 不存在{ }来框定函数的开始与结尾,通过缩进来判断是否是函数体语句

(4). 在下文的语句中采取函数名来调用函数

 3. return返回值

 另一种参数赋值形式

 4. *表示接受不定参数个数

 5. **表示参数只能是键值对的形式

十三、Python包

1. %%writefile + 文件名.py,表示在本地写入一个文件

 在默认的文件路径下写入一个名为www.py的文件

利用Notepad++打开该文件

文件的内容即为下方定义的变量和函数体

 2. %run 表示执行文件

 3. Import语句表示导入。可以导入脚本文件/工具包等等

(1). 当第一次使用import语句执行文件时,会默认执行一次文件内容;当重复执行import语句就不会再执行文件

 

 (2). as表示创建别名 n as m,文件n的别名是m

 

 4. 直接输入文件名来定位文件的存放位置(即为文件的默认保存路径)

 5. 文件名.变量名  这种方式会取到文件中变量的值

(1). 变量值的输出

 (2). 变量的重新赋值

 6. 文件名.函数名  这种方式表示调用文件中的函数,让函数执行并产生执行结果

 

 7. from表示从相应的文件中导入全部东西

 (1). 使用导入文件中的变量

 (2). 使用导入文件中的函数

8. 调用操作系统的工具来删除脚本文件

 调用工具来查看文件的默认存放路径

十四、Python异常

1. 异常的发生

一个正常的求数字对数的程序,定义了若输入”q”则会提前结束循环。输入2,3,4都可以正常执行得到结果

 但我们都知道,在对数当中,指数必须大于0。所以当我们输入0时就会产生异常。

 2. try-except,异常的捕获,并作出相应的反应。

可能会产生异常的语句包裹在try:语句块当中;

使用except来针对指定的异常做出反应

当输入的数据使得程序产生异常时,下面所有的东西都不再执行。直接执行对异常的处理当中

这种形式的弊端是我们必须要对可能发生的异常种类有很清楚的认识。如果except中写入的异常种类不是程序实际发生的异常种类,异常的捕获就失败了。

下面这个程序是将log放在了分母的位置。而我们知道log1==0,当输入值为1时会产生报错。

 3. 针对上述捕获异常产生的异常进行改进

写成exception,遇到任何异常都可以捕捉到

下面这段代码中整合了上述代码的异常。同样,除了ValueErrorZeroDivisionError以外的异常,全部都通过exception来处理。

更明显的感受exception

不再输入特定的异常,不管产生什么异常都直接用exception处理。

 4. try-raise结构。相当于对一场进行抛出。发现异常后底下的程序都不去执行,会跳出程序

下面这个程序执行一个判断是否存在的操作。当输入的数据存在于列表中时,程序正常执行;但当输入列表以外的数据时,就会抛出此异常

 5. 不论有没有异常都会执行的finally语句

(1). 无异常产生时:

 (2). 有异常产生时:

 (3). except处理异常时

 综上可以观察到,不管哪种情况,只要写入finally语句,就一定会执行

十五、Python文件操作

1. 讲指定的内容写到文件当中

通过%%writefil+文件名来定义要写入的文件。会在默认路径下创建一个文件

 在默认路径下生成

 文件内容

 2. 在编译环境中查看文件内容

(1). 首先需要将文件导入。通过open(‘文件路径’)

 (2). 调用read()方法读取文件的内容

(3). 按行输出文件内容

调用readlines()方法来实现文件的按行输出。

输出内容当中的“\n”表示换行符,因为在文件中输入一串英文后敲入了回车键。所以会显示\n

 (4). 利用循环输出文件内容

 (5). 对文件的操作行文结束之后,记得要关闭文件

 3. 对文件的逐句写操作

(1). open()方法的第一个参数表示执行操作的文件名。对于不存在的文件会先创建一个文件再进行下面操作。

(2). 第二个参数’W’,表示将要执行的是写操作

(3). write()中的内容即为要写入文件当中的内容。其中换行用表示\n来达到效果

 执行结束后会在默认路劲下生成一个名为tang_writetxt文件

 文件内容

 (4). 再执行一遍相同的操作后会造成文件内容的覆盖

文件内容变为

(5). 若想对文件内容进行追加式写入,则应该将open()方法的第二个参数改为’a’

 文件内容

 (6). open()方法的第二个参数变为’r’ 表示读,必须加入输出语句才能有输出结果

 4. 文件与异常结合

会对之前操作生成的tang_write.txt文件中的内容进行重写

文件中的内容:

 (2). 另一种语法

as相当于对文件的一个重命名

with相当于自动的完成tryexceptfinally

遇到错误会给文件自动关闭;没有错误的话,执行结束后也会自动关闭文键

文件内容:

写在最后:每次对文件执行完操作后都要关闭,是为了防止有报错或者数据的丢失

十六、Python中的类(面向对象编程)

1. 类的介绍

(1). class关键字定义:class + 类名 + :

(2). 类当中定义的变量和值所有的实例都可以共享

(3). 初始化函授又称构造函数,是每个类当中必要的。当创建一个类时会首先调用构造函数。此处定义的__init__(),注意此处是两个’-‘。括号内的第一个参数表示创建的实例名,第二个和第三个参数表示实例的属性

(4). self是必须要指定的,代表类的实例。但是不需要向其中传入参数

(5). 帮助信息相当于是对类的一个说明。

 ①. 可以通过:“类名+.+__+doc+__”的形式来输出帮助信息。注意此处是两个’-’

 ②. 创建两个对象,命名为p1p2。通过“类名=类.()”定义。向()内传入属性(即此处的nameage)的值

 ③. 通过对象.属性,表示对象调用属性,输出属性的值

 同样可以在调用的同时赋值,相当于修改属性的值

 ④. 通过对象.函数,表示对象调用类中的函数,执行函数的代码

 ⑤. del用来删除对象的属性操作 del+对象.属性

 同样可以使用delattr来达到效果

⑥. hasattr()用来检测一下对象中是否存在目标属性 hasattr(对象名,属性字段’)

 ⑦. getattr()用来获取对象所需的属性值 getattr(对象名,属性字段’)

 ⑧. setattr()表示修改对象的属性值  setattr(对象名,要修改的属性值的属性名修改后的属性值’)

 2. 类的有关信息

打印类的帮助信息

打印当前对象对应的类名

打印当前类的定义所在的模块

打印类的父类

打印字典结构,记录当前类的数据组成

 3. 子类与父类,子类继承自父类。例如:动物和狗的关系

父类中定义好的东西子类可以继承使用,而避免了重复定义。子类只需定义自己独有的即可。

具体解释可以参考代码行的注释

 运行代码和结果

十七、Python时间

1. 导入时间模块

 2. time()方法表示从1970.1.1至今经历了多少时间。表示一个时间戳

3. localtime()方法表示自动对时间戳进行换算,得出现在的时间

4. asctime()表示格式化时间

5. strftime(),指定格式输出时间

6. 导入日历模块(calendar)并指定年份和月份输出日历

 

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Star_KeyW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值