1.第一章:python语言的介绍
1.1 python的语言简介
1.1 来源:1989年,荷兰人吉多范罗·苏姆创建。
1.2 应用领域:
Wed开发,网络编辑,科学计算和数据可视化,数据库应用,多媒体开发,电子游戏应用。
1.2 安装与运行Python环境和Pycharm
Python的官方网站:https://www.python.org/
安装是一定要记住放在的路径。
python下载的是解释器,而Pycharm是集成开发环境。
PyCharm的官网网站: https://www.jetbrains.com.cn/en-us/pycharm/
1.3 Python基本输入和输出
输入:input()函数
语法格式:
x = input('提示:')
例子:
x = input('Please input:')
Please input:3
输出:print()函数
语法格式:
print(value)
例子:
print(100)
1.4 Python代码的规范
1.缩进:缩进体现代码之间的逻辑关系。一般以4个空格或一个Tab为基本缩进单位。
2.注释:使得代码可读性强。1.# 2.一对三引号 ‘’‘ 。。 ’‘’
3.导入模块:
import math
4.多行语句:
“\" 在行尾加上,可分成多行。
2. Python语法基础
2.1 python的数据类型
数值类型:1,整型(int):整数。2.浮点数(float):整数与小数组成。 3.复数(complex):实数与虚数组成。
4,布尔类型: 仅有True和False两个值。 有三种运算。
and(与运算):只有两个布尔值为True时,为True.
or (或运算):只有一个布尔值为True时,为True.
not(非运算):把True变成False,反之。
2.2 常量和变量
1.变量名必须是大小写英语,数字和 "_"的组合。
2.= 是赋值语句。
3.type()函数是查询变量的数据类型。
a = 10
print(type(a))
4.常量:常量是不能变的变量。
2.3 运算符与表达式
运算符:
1.算术运算符:加减乘除。
2.逻辑运算符:and,or,not
3.赋值运算符: ”=“
2.4 序列的数据结构
2.4.1 字符串 引号
语法结构:' ' , " ".
创建:
var1 = 'hi'
2.4.2 列表 方括号
是 Python 中非常常用的一种数据类型,它是一个有序的集合,可以随时添加和删除其中的元素。列表中的元素可以是任意类型,包括数字、字符串、布尔值等,甚至还可以是另一个列表(嵌套列表)。
语法格式:变量 = [ ]
1.访问列表的值:使用方括号切片的形式截取。
print(list[0])
2.删除列表的元素
list1 = [2000 , 1999]
list1.remove(1999)
3.列表排序:
list1 = [5,2,3,4,1]
list1.sort()
2.4.3 元组 小括号
Python 中的另一种有序集合数据类型,与列表相似,但元组是不可变的(immutable),即一旦创建后就不能再修改其内容。元组通常用于表示一组值,这组值在程序运行过程中不会改变。
语法格式:用圆括号 ()
包围,元素之间用逗号 ,
分隔。
# 创建一个元组
my_tuple = (1, 'apple', 3.14, True)
# 访问元组中的元素
print(my_tuple[0]) # 输出: 1
print(my_tuple[3]) # 输出: True
# 元组的长度
print(len(my_tuple)) # 输出: 4
# 尝试修改元组中的元素(会抛出异常)
# my_tuple[0] = 'one' # 这行代码会引发 TypeError
# 可以使用 + 运算符来连接元组
another_tuple = (42, 'banana')
combined_tuple = my_tuple + another_tuple
print(combined_tuple) # 输出: (1, 'apple', 3.14, True, 42, 'banana')
# 可以通过切片(slice)来获取元组的子序列(但不会修改原元组)
subset = my_tuple[1:3]
print(subset) # 输出: ('apple', 3.14)
2.4.4 字典 花括号
是 Python 中一种可变的数据结构,用于存储键值对(key-value pairs)。字典中的每个元素都由两部分组成:键(key)和值(value)。键是唯一的,且必须是不可变的数据类型(如整数、浮点数、字符串、元组等),而值可以是任何数据类型。
语法结构:用大括号 {}
包围,元素之间用逗号 ,
分隔。每个键值对用冒号 :
分隔。
# 创建一个字典
my_dict = {
'name': 'Alice',
'age': 30,
'city': 'New York'
}
# 访问字典中的值
print(my_dict['name']) # 输出: Alice
print(my_dict['age']) # 输出: 30
# 修改字典中的值
my_dict['age'] = 31
print(my_dict['age']) # 输出: 31
# 添加新的键值对
my_dict['country'] = 'USA'
print(my_dict) # 输出: {'name': 'Alice', 'age': 31, 'city': 'New York', 'country': 'USA'}
# 删除键值对
del my_dict['city']
print(my_dict) # 输出: {'name': 'Alice', 'age': 31, 'country': 'USA'}
# 检查键是否存在
if 'name' in my_dict:
print("Name is in the dictionary.")
# 遍历字典
for key, value in my_dict.items():
print(f"{key}: {value}")
2.4.5 集合 大括号
是一个无序的、不包含重复元素的集合。
语法格式:集合使用大括号 {}
或 set()
函数创建。
但注意,如果直接通过 {}
创建,且没有元素,则需要使用 set()
函数,因为 {}
会被 Python 解释器视为空字典。
# 创建一个集合
my_set = {1, 2, 3, 4, 4} # 重复元素会被自动去重
print(my_set) # 输出: {1, 2, 3, 4}
# 使用 set() 函数创建集合
another_set = set([1, 2, 2, 3, 5])
print(another_set) # 输出: {1, 2, 3, 5}
# 检查元素是否存在于集合中
if 3 in my_set:
print("3 is in the set.")
# 添加元素到集合
my_set.add(5)
print(my_set) # 输出: {1, 2, 3, 4, 5}
# 移除元素从集合
my_set.remove(3) # 如果元素不存在,会抛出 KeyError,可以使用 discard() 避免这个异常
print(my_set) # 输出: {1, 2, 4, 5}
# 集合的并集
union_set = my_set | another_set
print(union_set) # 输出: {1, 2, 3, 4, 5}
# 集合的交集
intersection_set = my_set & another_set
print(intersection_set) # 输出: {1, 2, 5}
# 集合的差集
difference_set = my_set - another_set
print(difference_set) # 输出: {4}
# 集合的对称差集(并集减去交集)
symmetric_difference_set = my_set ^ another_set
print(symmetric_difference_set) # 输出: {3, 4}
2.5 python是怎么类型转化的?
英文(需要转化的数字)。
3.Python 控制语句
3.1 选择结构
3.1.1 if语句
if:判断给出的条件是否满足,然后根据结果决定是否执行。
语法结构:if 表达式:
语句1
# 比较输入的数值是否大于6
a = input('请输入一个整数:')
a = int(a)
if a>6:
print(a)
3.1.2 if ...else语句
if ...else:如果条件为真,那么执行指定的操作;否则就会跳入else的操作。
语法格式:
if 表达式:
语句1
else:
语句2
# 比较输入的数值是否大于6
a = input('请输入一个整数:')
a = int(a)
if a>6:
print(a,'大于6')
else:
print(a.'小于或等于6')
3.1.3 if ...elif...else语句
elif: 多个条件的意思。
# 比较输入的数值是否大于6
a = input('请输入一个整数:')
a = int(a)
if a>6:
print(a,'大于6')
elif a==6
print(a,'等于6)
else:
print(a.'小于')
3.1.4 pass语句
pass
是一个空操作语句,它表示一个占位符,当语法上需要语句但程序不需要任何操作时就可以使用它。
pass
的主要用途是作为一个占位符,当你想要定义一个结构(比如函数、类、循环或条件语句),但还没有准备好或不需要实现其具体内容时。pass
的主要用途是作为一个占位符,当你想要定义一个结构(比如函数、类、循环或条件语句),但还没有准备好或不需要实现其具体内容时。
def my_function():
pass # 这是一个空的函数体,什么都不做
#在循环或条件语句中:
for i in range(5):
# 在这里,我们只是简单地打印出i的值,但如果你想在某些迭代中什么都不做,可以使用pass
if i % 2 == 0:
print(i)
else:
pass # 当i是奇数时,我们不执行任何操作
3.2 循环结构
3.2.1 while 语句
1.处理需要重复处理的相同的任务。
2.语法结构:
while 判断条件:
执行语句
3.例子:1+2+3...+100
sum = 0
counter = 1
while counter<=100:
sum = sum + counter
counter += 1
print('1到100之和为:’,sum)
3.2.2 .for语句
1.for语句:可以遍历任何序列的项目。
2.语法格式:
for 循环索引值 in 序列:
循环体
3.2.3 continue和break语句
1.continue
语句用于跳过当前循环迭代中的剩余代码,并立即开始下一个迭代。
2.break
语句用于立即终止循环,即使循环条件仍然为真。
3.代码:
for i in range(1, 6):
if i == 3:
continue # 当 i 等于 3 时,跳过此次循环的剩余部分
print(i) # 打印 1, 2, 4, 5
for i in range(1, 6):
if i == 3:
break # 当 i 等于 3 时,完全跳出循环
print(i) # 打印 1, 2
4. Python 函数与模块
4.1 函数的定义和使用
1,定义:是一段可重复使用的代码块,用于执行特定任务。
2.语法格式:
def 函数名(函数参数):
函数体
return 表达式
3.例子:
def add_numbers(a, b):
"""这个函数接受两个参数a和b,并返回它们的和"""
result = a + b
return result
# 调用函数并打印结果
print(add_numbers(3, 5)) # 输出:8
4. lambda表达式
1.定义:是一种定义简单函数的关键字。lambda
函数也被称为匿名函数,因为它们没有函数名。
2.语法格式:
lambda arguments: expression
3.例子:
add = lambda x, y: x + y
# 调用lambda函数
result = add(3, 5)
print(result) # 输出:8
4.2 函数参数
1.形式参数:def函数名后面括号里的变量。
2.实际参数:函数提供的值或者变量。
3.变量的作用域:
# 定义全局变量name2
name2 = "Jack"
def test():
name = "jack"
# 定义局部变量name
print(name)
test()
# 局部变量,外面无法使用
# print(name)
# 打印全局变量
print(name2)
4.3 模块
1.定义:是一个包含Python定义和语句的文件。
2.导入模块:
#第一种,导入模块:
import math
print(math.sqrt(16)) # 输出:4.0
#第二种,导入模块并指定别名:
import math as m
print(m.sqrt(16)) # 输出:4.0
#第三种,从模块中导入特定的函数或变量:
from math import sqrt
print(sqrt(16)) # 输出:4.0
#第四种,导入模块中的所有内容
from ... import *
5. Python 文件
5.1 文件
1.有什么文件?
1.1 源代码文件:.py.:Python源代码文件,包含Python程序代码
1.2 字节码文件:.pyc :Python源代码文件经过编译后生成的字节码文件,可以提高加载速度。
1.3 数据文件 :
- 文本文件:
.txt
包含纯文本内容,无格式或样式。 - CSV文件:
.csv
以逗号分隔值的文件,常用于存储和交换数据。 - JSON文件:
.json
轻量级的数据交换格式,易于阅读和编写,常用于存储和传输结构化数据。 - XML文件:
.xml
可扩展标记语言,用于存储和传输结构化数据。 - Excel文件:
.xlsx
电子表格文件,经常用于存储和处理大量数据. - 图像文件:
- 常见的扩展名包括:
.jpg
,.png
,.bmp
等 - 包含图像的二进制数据,常用于存储和显示图像。
- 常见的扩展名包括:
- 4PDF文件:
- 扩展名:
.pdf
- 便携式文档格式,可在不同平台上保持一致的外观和布局
- 音频和视频文件:
- 音频文件扩展名如:
.mp3
,.wav
等 - 视频文件扩展名如:
.mp4
,.avi
等 - 用于存储和播放音频和视频内容。
- 音频文件扩展名如:
- 扩展名:
- 压缩文件:
- 常见的扩展名包括:
.zip
,.rar
,.tar.gz
等 - 用于将多个文件或文件夹打包成一个单独的文件,以便于传输或存储。
- 常见的扩展名包括:
2.文件的访问
步骤:
1.使用open()函数打开文件,且返回一个file对象。
2.使用file对象的读写操作。
3.使用file对象的close()方法关闭文件。
5.2 打开,读写的操作
1.打开。open()函数
2.语法格式:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
-
#file 包含文件名的字符串,可以是绝对路径,可以是相对路径。
-
#mode 一个可选字符串,用于指定打开文件的模式。默认值 r 表示文本读。
-
#encoding 文本模式下指定文件的字符编码。
-
字符 意义
-
'r' 文本读取(默认)
-
'w' 文本写入,并先清空文件(慎用),文件不存在则创建
-
'x' 文本写,排它性创建,如果文件已存在则失败
-
'a' 文本写,如果文件存在则在末尾追加,不存在则创建
3.例子:
with open('example.txt', 'r') as file:
content = file.read()
print(content)
1.读取:
打开文件后,可以使用文件对象的read()
、readline()
或readlines()
方法来读取文件内容。
read(size=-1)
:读取指定数量的数据,如果不给出或为负则读取所有内容。readline(size=-1)
:读取文件的一行,如果指定size参数,则读取该行的前size个字符。readlines()
:读取所有行并返回包含各行作为元素的列表。
2.例子:
# 打开文件
with open('example.txt', 'r') as file:
# 读取整个文件内容
content = file.read()
print(content)
# 或者逐行读取文件内容
file.seek(0) # 将文件指针移回文件开头
for line in file:
print(line, end='') # end='' 用于避免打印额外的换行符
3。写入write()
1.
with open(file=r"a.txt",mode="w",encoding="utf-8") as fb:
fb.write("我是新写入的内容")
4. 文件内移动
seek()
函数在 Python 中是文件对象的一个方法,用于移动文件指针到文件中的指定位置。
file_object.seek(offset[, whence])
file_object
:表示一个文件对象,通常由open()
函数返回。offset
:必需的参数,表示相对于某个位置的偏移量,单位是字节。可以是正数、负数或零。whence
:可选的参数,用于指定offset
的起始位置,默认为 0。它的取值可以是:0
:表示从文件开头开始计算偏移量(默认值)。1
:表示从当前位置开始计算偏移量。2
:表示从文件末尾开始计算偏移量。
6. 面向对象程序设计
6.1类和对象
1.定义类:类(Class)是一种用户定义的数据类型,它允许你创建具有相同属性和方法的对象(通常称为类的实例或对象)。类是对象的蓝图或模板,它定义了对象所应具有的属性和方法。
class 类名:
属性
成员函数
2.例子:
class MyClass:
# 类变量(或称为静态变量)
class_variable = "I am a class variable"
def __init__(self, name, age):
# 实例变量(或称为属性)
self.name = name
self.age = age
def greet(self):
# 方法(或称为函数)
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
1.成员函数:当你定义一个类并在该类中定义一个方法(函数)时,该方法就被视为该类的一个“成员函数”。一般指定特定实例绑定的函数。
2.self: self
是一个对实例对象本身的引用,它是类的方法的第一个参数(尽管在调用方法时不需要显式地传递它)。self
使得实例方法可以访问和修改实例的属性,并可以调用同一个实例的其他方法。
3.定义对象:指的是创建一个类的实例。
1.语法:
对象名 = 类名()
2.例子:
class person:
num = 0
def sayhello(self):
print("hello!")
# 定义对象p
p = person()
p.sayhello()
4. 构造函数__init__()
1.__init__()
是一个特殊的方法,通常被称为类的构造函数或初始化方法。
当一个类的实例(即对象)被创建时,__init__()
方法会自动被调用,以初始化新创建的对象的状态。
2.例子:
class Person:
def __init__(self, name, age):
# self 代表类的实例本身
# name 和 age 是我们希望在创建 Person 对象时提供的参数
self.name = name # 设置实例的 name 属性
self.age = age # 设置实例的 age 属性
# 创建一个 Person 类的实例
person1 = Person("Alice", 30)
# 访问实例的属性
print(person1.name) # 输出: Alice
print(person1.age) # 输出: 30
7. PyInstaller-将python文件打包
1.定义:用于将Python程序打包成独立可执行文件的工具。
2.安装PyInstaller:
pip install pyinstaller
3.打包Python程序
pyinstaller yourscript.py
4.常见打包模式
1.单个文件模式(--onefile):如果你想将所有文件打包成一个单独的可执行文件,可以使用--onefile
选项:
pyinstaller --onefile yourscript.py
2.GUI应用程序模式(--windowed):如果你的Python程序是一个图形用户界面(GUI)应用程序,并且不希望显示控制台窗口,可以使用--windowed
选项,并可以指定一个图标文件。
pyinstaller --windowed --icon=youricon.ico yourscript.py