一、初识python
1.软件安装
python解释器:Welcome to Python.org==>downloads==>选择版本
pycharm:PyCharm: the Python IDE for data science and web development
pycharm破解:查看主页文件。
2.编写第一个程序
新建项目==》创建一个code1-1.py文件,内容:
#打印数字 print("2024") #打印hellow word print("hello word")
2.1 注释
作用:方便阅读代码时,能够快速的了解代码的功能,不会被执行
分类:块注释,行内注释,多行注释
使用规范:
1.注释不是越多越好,对于一目了然的代码,不需要添加注释
2.对于 复杂的操作,应该在操作开始前写上若干行注释
3.对于 不是一目了然的代码,应在其行尾添加注释
4.对绝不要描述代码,假设阅读代码的人比你更懂 Python,他只是不知道你的代码要做什块注释:
以#开始,一直到本行结束都是注释,为了保证代码的可读性,#后面建议先添加一个空格,然后再编写相应的说明文字(PEP8),注释不会运行
代码是给机器执行用的,注释是给人看的,方便阅读代码时,能够快速的了解代码的功能行内注释:
以#开始,一直到本行结束都是注释与代码写在同一行#前面至少有两个空格多行注释:
如果希望编写的注释信息很多,一行无法显示,就可以使用多行注释要在python 程序中使用多行注释,可以用 一对 连续的 三个 引号(单引号和双引号都可以)# 块注释 print(111) print(222) #行内注释 ''' 多行 注释 ''' """ 多行 注释 """ print(333)
2.2 print函数
打印单行内容:
# 任务1 打印数字 2024 print(2024) # 任务2 打印字符串:我是mia print("我是xxx") # 任务3 创建变量year 只为2024 打印year year = 2024 print(year)
打印多行内容:
逗号的使用:
想要在一行中打印多个内容,可以在print()函数中使用逗号隔开多个内容变量、数字、字符串都可以注意使用英文的逗号。# 任务4 打印多行内容 print(2024,"年","不加班")
参数:
print(*objects, sep='', end='n', file=None, flush=False)
sep:设置多个打印的分隔符,后面默认是一个空格,不想用可以设置为sep=""。
end:结尾符号,默认是"/n",换行符。
格式化输出:占位符
如果希望输出文字信息的同时,一起输出 数据,就需要使用到 格式化操作符% 被称为 格式化操作符,专门用于处理字符串中的格式-包含 %的字符串,被称为 格式化字符串% 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符 。# 任务4 打印多个内容 year = 2024 month = 4 day=22 week="周一" weather="晴" temp=28.3 print("今天是%d年%02d月%02d日,%s,天气:%s,%.2f" %(year,month,day,week,weather,temp))
2.3input函数
作用:输入指定内容
所谓输入,就是用代码获取用户通过键盘输入的信息例如:
去银行取钱,在 ATM 上输入密码在淘宝网购,在手机上输密码付款上的输入信息,需要使用到 input 函数在 Python 中,如果要获取用户在 键盘用户输入的 任何内容 Python 都认为是一个 字符串。type(变量名)可以查看变量的类型。Int(变量)可以强制转换为int类型
# 任务1:创建变量name,保存用户输入的名字打印变量name name=input("请输入用户名:") # 任务2:创建变量age,保存用户输入的年龄打印用户的出生年份 age=input("请输入年龄:") year=2024 # 类型转换 print(type(age)) age=int(age) print("姓名%s,年龄%s,出生年份%s"%(name,age,year-age))
2.4 扩展知识
3.知识总结及练习
3.1 导图
3.2 单词
3.3 练习
""" 在控制台依次提示用户输入: 姓名、公司、职位、电话、邮箱 -按照以下格式输出 **************** 姓名: 公司: 职位: 电话: 邮箱: **************** """ name=input("请输入姓名:") copy=input("请输入公司:") post=input("请输入职位:") potho=input("请输入电话:") email=input("请输入邮箱:") print("********************************") print("姓名:",name) print("公司:",copy) print("职位:",post) print("电话:",potho) print("邮箱:",email) print("********************************")
二、变量与简单的数据类型
1.变量
代码:处理数据用的
变量:存储数据的
1.1 创建变量
创建变量(变量的赋值、变量的定义):
变量名 = 变量值
变量定义之后,后续就可以直接使用了
变量必须先定义后使用
=两边要留一个空格
单个赋值:
name = "张三" age = 18 major = "计算机" education = "master"
多个赋值:
# 多个变量值相同 num1 = num2 = num3 = 10 # 多个变量值不同 元组赋值 a, b = 10, 20
练习:
''' 【练习】 苹果的价格是 10.5 元/斤 买了 7.5 斤苹果计算付款金额 ''' price = 7.5 num = float(input("请输入购买斤数")) print("总共花费:%.2f" % (num * price))
1.2 变量修改
创建变量后,可以在代码中重新赋值。
year = 2023 print(year) year = 2024 print(year)
不同类型的变量也可以进行修改、重新赋值,与类型无关。
1.3 变量与常量
程序在运行的过程中,值永远不会发生改变的量称之为常量。
python没有专门的常量类型般约定俗成使用大写表示常量,多个单词用_分割。PI=3.14159 MY_BIRTHDAY = "20214-04-02"
1.4 变量命名
标示符:
标示符就是程序员定义的 变量名、函数名。名字需要有见名知义的效果。
标示符可以由:字母、下划线、数字组成,不能以数字开头,不能与关键字重名。关键字:
命名规则:
命名规则 可以被视为一种 惯例,并无绝对与强制。
目的是为了 增加代码的识别和可读性。
在 Python 中如果变量名需要由二个 或多个单词组成时,可以按照以下方式命名:
每个单词都使用小写字母
单词与单词之间使用 下划线连接
例如:first_name、last_name、qq_number、qq_password驼峰命名法当变量名是由2个或多个单词组成时还可以利用驼峰命名法来命名:
小驼峰式命名法:第一个单词以小写字母开始,后续单词的首字母大写。
例如:firstName、lastName
大驼峰式命名法
每一个单词的首字母都采用大写字母。例如:FirstName、LastName、CamelCase
1.5 变量的数据类型
在 Python 中定义变量是 不需要指定类型(在其他很多高级语言中都需要)。
我们可以使用type和isinstance来测试和判断数据类型type()传入变量,函数可以返回数据类型。
isinstance(),传入变量和某个类型返回true或false。
2.简单数据类型
2.1 全部数据类型
红色表示常用
数据类型 英文 描述 举例 整型 Integers 表示整数,不带小数点。 100 浮点型 Floating point numbers 表示带有小数点的数字。 15.20 复数 Complex Numbers 表示带有实部和虚部的数字。 3.14j 布尔型 Boolean 表示真假。有两个值。 True或False 字符串 String 一串字符。 "Hello,World!" 列表 List 有序的集合,可以包含任何数据类型。 [1,'a', 2.3] 元组 Tuple 类似于列表,但不可变. (1,2.3,'aa') 集合 Set 无序且不重复的元素集合。 {1,2,3} 字典 Dictionary 键值对的集合。 {'name': John', 'age':30}
2.2 整型(Integers)
Python可以处理任意大小的整数当然包括负整数在程序中的表示方法和数学上的写法一模一样。
# 整数的定义 # 正整数 num1 = 10 print(num1) # 负整数 num2 = -20 print(num2) # 查看变量数据类型 print(type(num1)) print(isinstance(num2, int)) # 输入一个数字进行计算 num3 = input("请输入一个数字:") #先转化你才能计算 print(int(num3)+10)
2.3 浮点数(Floating point numbers)
由整数部分和小数部分组成。注意:运算可能有四舍五入的误差。
num1 = 0.123434645 num2 = 0.2 num3 = 0.1 print(type(num1)) print(num1 + num2) num4 = num3 + num2 # 不精确 print(num4) # 四舍五入 print(round(num4, 2)) print(round(num1, 2)) import math # 向上取整数 ceil print("向上取整num1=",math.ceil(num1)) # 向下取整数 floor print("向下取整num1=",math.floor(num1))
2.4 布尔型(Boolean)
布尔类型的变量只有True、False两种值。
作用:作为真假的判断。在python中,能够解释为假的值有:
None、0、0.0、False
所有的空容器(空列表、空元组、空字典、空集合、空字符串)
a = True b = False print(a, b)
2.5 字符串(String)
字符串就是一串字符,是编程语言中表示文本的数据类型。
在 Python 中可以使用一对双引号或者一对单引号定义一个字符串。
字符串是以单引号或者双引号括起来的任意文本,也可以是以三单引号或者三双引号,引起来的任意文本。
# 单引号字符串 str1 = 'hello' # 空串 str2 = str() # 双引号字符串str2 = "hello world" # 三引号字符串 多行字符串 str3 = ''' hello world hello 2024 ''' str4 = """ hello 2024 hello world """
运算:
字符串加法,字符串乘法:
# 字符串运算 str1 = "hello python " str2 = "hello world " # 字符串加法(字符串拼接) str3 = str1 + str2 print(str3) # 字符串乘法(重复字符串) str3 = str2 * 3 print(str3) # 字符和数字不能相加(报错) str3 = str2 + 3 print(str3)
索引:
可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始。
# 索引 str4 = "123456789" print(str4[0]) print(str4[-1]) # 取多个 print(str4[0:5]) # 第三个参数为步数,默认为1 print(str4[0:9:2]) # 起始索引,默认为0 可以省略 print(str4[:9:2]) # 结束索引,默认为-1 可以省略 print(str4[::2])
字符串反转:
# 字符串反转 print(str4[-1:-10:-1]) print(str4[::-1])
3.数据类型转换
函数名 函数值 int(x,[基数]) 将数字或字符串转换为整数,如果x为浮点数,则自动截断小数部分 float(x) 将x转换成浮点型 bool(x) 转换成bool类型的True或 False str(x) 将x转换成字符串,适合人阅读
3.1 转换为Int
字符串转换为int,字符串必须为纯数字
浮点数转换为int,浮点数小数点后会自动舍去
布尔类型转换为int,True为1,False为0
# 转换为整数 # 字符串转换为int,字符串必须为纯数字 s1 = '2024' n1 = int(s1) print(s1, n1) print(type(s1), type(n1)) # 浮点数转换为int,浮点数小数点后会自动舍去 f1 = 2.23 n1 = int(f1) print(f1, n1) print(type(f1), type(n1)) # 布尔类型转换为int,True为1,False为0 b1 = True b2 = False n1=int(b1) print(b1, n1) n1=int(b2) print(b2, n1)
3.3 转换为float
字符串转换为float,字符串必须为纯数字,有没有小数点都可以
int转换为float,自动补上小数点
布尔类型转换为float,True为1.0,False为0.0
# 转换为浮点数 # 字符串转换为float,字符串必须为纯数字,有没有小数点都可以 s1 = '2024' print(float(s1)) # int转换为float,自动补上小数点 i1= 2024 print(float(i1)) # 布尔类型转换为float,True为1.0,False为0.0 b1 = True b2 = False f1=float(b1) print(b1, f1) f1=float(b2) print(b2, f1)
3.4 转换为boolean
字符串转bool,不管内容是什么,全部为true,空为flase
int转bool,非0为true,0为flase
float转bool,非0.0为true,0.0为flase
# 转换为布尔类型 # 字符串转bool,不管内容是什么,全部为true,空为flase s1 = "0" print(bool(s1)) s1 = "Flase" print(bool(s1)) s1 = "" print(bool(s1)) # int转bool,非0为true,0为flase i1 = 1 print(bool(i1)) i1 = 100 print(bool(i1)) i1 = 0 print(bool(i1)) # float转bool,,非0.0为true,0.0为flase f1 = 1.0 print(bool(f1)) f1 = 100.0 print(bool(f1)) f1 = 0.0 print(bool(f1))# 转换为布尔类型
3.5 转换为字符串
# 转换为字符串 # int转为字符串 i1=5 print(str(i1),type(str(i1))) # float转为字符串 f1=5.0 print(str(f1),type(str(f1))) b1=True # bool转为字符串 print(str(b1),type(str(b1))) b1=False print(str(b1),type(str(b1)))
3.6 进制转换
int第二个参数可以表示进制,1b为27
s2="1b" print(int(s2,16))
3.7 扩展知识
小整数地址问题:
Python中的小整数,通常指的是-5至256之间的整数。
当你在Python中创建一个整数对象时,Python会根据该整数的值动态地为其分配内存空间。对于小整数Python会使用一种称为“小整数缓存”的机制来优化内存使用。这个缓存池中的整数对象会被重复利用,而不是为每个新创建的小整数分配新的内存空间。这样可以减少内存分配和释放的开销,提高程序的性能。
如果你需要跟踪Python对象的内存地址,可以使用Python提供的内置函数id()来获取对象的唯一标识符这个标识符通常可以用来近似地表示对象的内存地址但是请注意,这个标识符并不是真正的内存地址,而是由Python解释器生成的一个唯一标识符,用于区分不同的对象实例。
4.知识总结及练习
4.1导图
4.2 单词
4.3 练习
# 这里有 10 个苹果,小A 拿走了 2 个,小B 拿走了 4 个小C 拿走剩下的所有的苹果。 # 小A 和 小B 两个人一共拿走多少苹果? # 小C 能拿走多少苹果? sum=input("苹果共有:") anum=input("小a拿走苹果:") bnum=input("小b拿走苹果:") abnum=int(anum)+int(bnum) print("小a小b共拿走:",abnum,"个。") print("小c拿走剩下的全部:",int(sum)-abnum,"个。")
三、运算符与表达式
运算符:
类型 内容 算术运算符 +,-,*,/,//,%,** 赋值运算符 =,+=,-=,*=,/=,//=,%= 位运算符 `,&,~,<<,>>,∧,` 关系运算符(比较运算符) ==,!=,<,>,<=,>= 逻辑运算符 and or not 成员运算符 in not in 身份运算符 is 表达式:
概念:由变量、常量和运算符组成的式子称为表达式在数学上为了计算结果,我们会写一些式子计算。
1.算术运算符
运算符 描述 优先级 实例 + 加 1 10+20=30 - 减 2 10-20=-10 * 乘 2 10*20=200 / 除 2 10/20=0.5 // 取除数 2 返回除法的整数部分(商)9//2输出结果4 % 取余数 2 返回除法的余数9%2输出结果1 ** 幂 3 又称次方、乘方,2**3=8 优先级:3最高1最低,优先级相同从前向后计算。
功能:进行符号对象的算术过算,不会修改变量的值
值:相关算术运算的结果
2.赋值运算符
运算符 描述 实例 = 简单的赋值运算符 c=a+b将a+b的运算结果赋值为c += 加法赋值运算符 c+=a等效于c=c+a -= 减法赋值运算符 c-=a等效于c=c-a *= 乘法赋值运算符 c*=a等效于c=c*a /= 除法赋值运算符 c/=a等效于c=c/a //= 取整除赋值运算符 c//=a等效于c=c// a %= 取 模(余数)赋值运算符 c%=a等效于c=c%a **= 幂赋值运算符 c**=a等效于c=c**a 格式:变量=表达式
功能:计算等号右侧“表达式的值,并赋值给等号左侧的“变量
值:赋值结束后变量的值
3.比较运算符
运算符 描述 == 检查两个操作数的值是否相等,如果是,则条件成立,返回 True != 检查两个操作数的值是否不相等,如果是,则条件成立,返回 True > 检查左操作数的值是否大于右操作数的值,如果是,则条件成立,返回 True < 检查左操作数的值是否小于右操作数的值,如果是,则条件成立,返回 True >= 检查左操作数的值是否 大于或等于 右操作数的值,如果是,则条件成立,返回True <= 检查左操作数的值是否 小于或等于 右操作数的值,如果是,则条件成立,返回True 格式:表达式1关系运算符 表达式2
功能:计算表达式1和表达式2的值
值 :关系成立,则整个关系运算表达式值为真,关系不成立,则关系运算表达式值为假。
注意:字符串比较会比较每个值的ascii码。
4.逻辑运算符
运算符 逻辑表达式 描述 and x and y 只有x和y的值都为 True,才会返回True 否则只要x或者y有一个值为False,就返回 False or x or y 只要x或者y有一个值为 True,就返回 True 只有x和y的值都为 False,才会返回 False not not x 如果x为 True,返回 False 如果x为False,返回 True Python 中的 逻辑运算符
包括:与 and/或 or/非 not
逻辑与 and 对应汉语的意思是“并“,“同时”,”且”
逻辑或 or 对应汉语意思为“或者”·
逻辑非 not 对应汉语意思为“相反”
5.位运算符
运算符 描述 功能 实例 & 按位与运算符 参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 5&7 | 按位或运算符 参与运算的两个值,如果两个相应位有一个为1时,则该位的结果为1,否则为0 5|7 ^ 按位异或运算符 参与运算的两个值,如果两个相应位不同时,则该位的结果为1,否则为0 5^7 ~ 按位取反运算符 对数据的每个二进制位进行取反操作,把1变为0,把0变为1 ~5 << 左移动运算符 运算术的各二进制位全部向左移动若干位,由符号右侧的数字指定移动的位数,高位丢弃,低位补0 9<<2 >> 右移动运算符 运算术的各二进制位全部向右移动若干位,由符号右侧的数字指定移动的位数,低位丢弃,高位补0 9>>2
6.成员运算符
运算符 描述 实例 in 如果在指定的序列中找到值返回True,否则返回 False 3 in (1,2, 3) 返回 True not in 返回如果在指定的序列中没有找到值返回True,否则返回 False 3 not in (1,2,3)返回False
7.身份运算符
运算符 描述 is 判断两个标识符是否引用同一个对象,是的话返回真,否则返回假 is not 判断两个标识符是否不是引用同一个对象是的话返回真,否则返回假
8.运算的优先级
运算符 描述 ** 幂 (最高优先级) ~,+,- 按位取反,一元运算符(正负号) *,/,%,// 乘、除、取余数、取整除(取商) +,- 加法、减法 <<,>> 左移,右移 & 按位与 · ^` >,<,>=,<= 比较运算符 ==,!= 等于运算符 =,+=,-=,*=,/=,%,%=,//=,**= 赋值运算符 is,is,not 身份运算符 in,not in 成员运算符 not,or,and 逻辑运算符
9.知识总结及习题
9.1导图
9.2单词
四、条件判断
1.单分支选择结构
如果 条件成立:
执行这行代码
否则:
执行这行代码
if 要判断的条件:
条件成立时,要做的事情
.....
注意:代码的缩进为一个 tab 键,或者 4 个空格-- 建议使用空格
weather = "下雨" if weather == "下雨": print("带伞") print("注意安全")
2.双分支选择结构
if 要判断的条件:
条件成立时,要做的事情
else:
条件不成立时,要做的事情
if和 else 语句以及各自的缩进部分共同是一个 完整的代码块
weather = input("请输入是否下雨") if weather == "是": print("带伞") else: print("不用带伞")
3.多分支选择结构
if 条件1:
条件1满足执行的代码
elif 条件2:
条件2满足时,执行的代码
elif 条件3:
条件3满足时,执行的代码
else:
以上条件都不满足时,执行的代码
使用 if 可以 判断条件使用 else 可以处理 条件不成立 的情况但是,如果希望 再增加一些条件条件不同,需要执行的代码也不同时,就可以使用 elif
score = int(input("请输入分数:")) if score >= 90: print("优") elif score >= 80: print("良") elif score >= 60: print("及格") else: print("不及格")
4.嵌套选择
if 条件 1:
条件 1 满足执行的代码
if 条件 1 基础上的条件 2:条件 2 满足时,执行的代码
#条件 2 不满足的处理else:
条件 2 不满足时,执行的代码
#条件 1 不满足的处理else:
条件1 不满足时,执行的代码
在开发中,使用if进行条件判断如果希望在条件成立的执行语句中再增加条件判断,就可以使用if的嵌套。
if 的嵌套的应用场景就是:在之前条件满足的前提下,再增加额外的判断
if 的嵌套 的语法格式,除了缩进之外 和之前的没有区别
5.match语句
x= 10
match x:
case 1:
print("x is 1")
case 2:
print("x is 2")# 匹配所有其他值
case _:
print("xis not 1 or 2")
Python中的match语句是Python 3.10及以后版本中引入的新特性,用于模式匹配。它允许你根据对象的模式来检查对象,并执行相应的代码块
6.match和if的对比
if:
if语句是最基本的条件控制结构,用于基于条件测试执行不同的代码块。
if语句在处理简单条件和分支时非常有用。
你可以使用elif(elseif)来添加额外的条件分支。
if语句不支持模式匹配,只能基于布尔表达式进行条件判断。match:
match是Python 3.10及以后版本引入的新特性,主要用于式匹配。
match允许你根据对象的模式结构来检查对象,并根据匹配的模式执行相应的代码块。
match特别适用于处理复杂的数据结构,如元组、列表、字典,以及自定义类的实例。
它通过模式匹配提供了更简洁、更直观的方式来处理复杂的条件逻辑。
7.扩展知识
代码规范
缩进
条件判断、循环、函数定义的时候都需要用缩进来控制代码块结束小技巧:一般句尾有冒号时,都是需要缩进的
四个空格或者一个tab键为一个缩进代码编排
缩进4个空格,不能用tab键和空格混合缩进
所有行限制的最大字符数为79
添加适当的空行
空格
二元运算符两边添加一个空格
逗号、分号、冒号后边留一个空格,前面不留
8.知识总结及练习
8.1导图
8.2单词
8.3练习
# 根据输入年龄 输出 tip = "请输入阿拉伯数字" age = input("请输入年龄:") if age.isdigit(): age = int(age) if age < 18: print("未成年") elif age >= 18 and age < 65: print("成年") elif age >= 65 and age <= 120: print("老年") else: print("输入不合法") else: print(tip) # 定义两个整数变量 python_score、c_score,编写代码判断成绩要求只要有一门成绩 >= 60 分就算合格 python_score =input("请输入python_score") c_score =input("请输入python_score") if python_score.isdigit() and c_score.isdigit(): python_score=int(python_score) c_score=int(c_score) if python_score>=60 or c_score>=60: print("合格") else: print("不合格") else: print(tip) # 判断输入是否是闰年 year = input("请输入年份:") if year.isdigit(): year=int(year) if (year%4==0 and year%100!=0) or (year%400==0): print("True") else: print("False") else: print(tip)
五、循环
死循环:
概念:条件始终为真的循环称为死循环在循环语句中,表达式永远为真,致循环持续执行程序无法终止
1.While循环
循环的作用就是让指定的代码重复的执行。
while 循环最常用的应用场景就是让执行的代码 按照指定的次数重复执行。遇到while语句时,首先计算表达式的值如果表达式的值为假,则跳过整个while语句,继续执行下面的代码;如果表达式的值为真,则执行循环体。执行完“循环体”再次计算“表达式的值。如此循环往复直到“表达式”的值为假才停止循环。
初始条件设置 -- 通常是重复执行的计数器
while 条件(判断计数器是否达到目标次数)条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...处理条件(计数器 + 1)
# 打印 5 遍 Hello Python i = 0; while i < 5: print("Hello Python") i += 1;
# 打印 5 遍 Hello Python for i in range(5): print("Hello Python") # 计算1-100的和 sum = 0; for i in range(101): sum += i; print(sum);
2.for循环
2.1range()函数
range()函数可以用来创建一个数字序列常与for循环结合使用来重复执行代码块指定的次数。
# 打印 5 遍 Hello Python for i in range(5): print("Hello Python") # 计算1-100的和 sum = 0; for i in range(101): sum += i; print(sum); # 计算阶乘 # 阶乘求和 sum2 = 0; for i in range(4): # 计算阶乘 sum = 1; for j in range(i+1): sum = sum*(j+1); sum2+=sum print(sum2);
3.循环控制
3.1 break
作用:退出循环注意:只能跳出距离最近的for或者while循环
在循环过程中,如果 某一个条件满足后,不 再希望 循环继续执行可以使用break退出循环
i = 0 while i < 10: #break 某一条件满足时,退出循环,不再执行后续重复的代码 if i == 3: break print(i)i += 1 print("over")
3.2 continue
作用:跳过本次循环后面的剩余语句,然后继续下一次循环注意:只能跳过距离最近的for或者while循环。
for x in range(10): if x == 5: continue print("x= %d"%x)
3.3 与else结合
else的下级代码:没有通过 break 退出循环,循环结束后,会执行的代码
num = 1 sum = 0 while num <= 5: sum = sum +num if sum==10: break num += 1 else: print('没有执行break语句')
3.4 pass
作用:当语句要求不希望任何命令或代码来执行时使用
说明:pass语句表示一个空操作,在执行时没有任何的响应,pass的位置最终应该有代码来执行,只不过暂时写不出来可以使用在流程控制和循环语句中
if 1: pass
4.知识总结及习题
4.1 导图
4.2 单词
六、组合数据类型
1.序列
1.1 概念
在python中,有这样一些类型它们的成员是有序排列的,并且可以通过下标访问成员,这些类型称之为序列。
包括:
列表、range、元组和字符串;
1.2序列的通用操作
函数 描述 备注 len(item) 计算容器中元素个数 del(item) 删除变量 del有两种方式 max(item) 返回容器中元素最大值 如果是字典,只针对 key 比较 min(item) 返回容器中元素最小值 如果是字典,只针对 key 比较
描述 Python 表达式 结果 支持的数据类型 切片 "0123456789"[::-2] "97531" 字符串、列表、元组
运算符 Python 表达式 结果 描述 支持的数据类型 + [1, 2]+ [3, 4] [1,2, 3, 4] 合并 字符串、列表、元组 * ["Hi!”]* 4 ["Hi","Hi","Hi","Hi"] 重复 字符串、列表、元组 in 3 in (1, 2, 3) True 元素是否存在 字符串、列表、元组、字典 not in 4 not in (1, 2, 3) True 元素是否不存在 字符串、列表、元组、字典 > ,>=,==,<,<= (1,2, 3)< (2, 2, 3) True 元组元素比较 字符串、列表、元组
2 列表
2.1 列表的定义
List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组专门用于存储 一串信息
列表用[ ]定义,数据之间使用,分隔列表的索引从0开始
索引就是数据在列表中的位置编号,索引 又可以被称为下标
注意:从列表中取值时,如果 超出索引范围,程序会报错
2.2 列表创建
语法:
列表名 =[元素1,元素2,元素3...]list1=[] list2 =[10,9,True,'张三'] list3 = list()
2.3 列表通用操作
索引,切片,加法,乘法,成员运算,比较运算符。
索引从0开始包头不包尾,具体参考字符串切片。
比较运算符只会比较第一个元素。
len(),求列表长度。
max(),求列表最大值。
sum(),列表求和
del listName,直接删除,不是一个函数直接用就可以。
2.4 列表遍历
# 遍历 for i in list2: print(i) # 遍历+索引 for i,j in enumerate(list2): print(i,j) for i in range(len(list2)): print(i,list2[i])
2.5 列表常用方法
变量.方法名()
方法名 作用 .appent() 尾部添加一个元素。 .extend() 尾部添加一个列表。 .insert() 指定索引插入一个元素。 .pop() 指定索引删除一个元素。 .remove() 根据元素值删除一个元素,删除前面的第一个该元素。 .clear() 清空列表。 .copy() 复制列表。 .count() 计算指定元素个数。 .index() 查找某个元素,有的话返回索引,没有返回-1。 .reverse() 反转列表。 .sort() 列表排序。
3.元组
3.1 元组定义
Tuple(元组)与列表类似,不同之处在于元组的元素不能修改。元组是多个元素组成的序列。用于存储一串 信息,数据之间使用逗号分隔
元组用()定义只有一个元素的话需要在后面加一个逗号。
3.2 元组创建
info_tuple1=("zhangsan",18,1.75)
info_tuple2=(18,)
info_tuple3=()
info_tuple4=tuple()
3.3 元组通用操作
变量.方法名()
方法名 作用 .count() 计算指定元素个数。 .index() 查找某个元素,有的话返回索引,没有返回-1。
3.4 元组遍历
同列表
4.range
系统提供的内建函数range(start,end,[step=1]),生成个等差序列[start, end)。
注意序列属于不可变序列,不支持元素修改,不支持+和*操作。
range一般用于for-in循环遍历。
原型:range([start, ]stop[, step])
-range(stop)
-range(start, stop)-range(start, stop, step)
功能:生成列表
参数:
start:表示列表起始值,包含,默认为0stop:表示列表结束值,但是不包含
step:步长,默认为1
# 查询1000以内的水仙花数 for i in range(1, 1000): i1 = i % 10 i2 = int((i / 10) % 10) i3 = int(i / 100) if (i1 ** 3 + i2 ** 3 + i3 ** 3) == i: print(i)
5.字符串
5.1 概念
字符串就是一串字符,是编程语言中表示文本的数据类型。在 Python 中可以使用 一对双引号或者 一对单引号定义一个字符串。
字符串是以单引号或者双引号括起来的任意文本,也可以是以三单引号或者三双引号引起来的任意文本。
5.2 常用方法
运算:
字符串加法
字符串乘法
索引:
可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始。
6.字典
6.1概念
dictionary(字典)是 除列表以外python 之中最灵活的数据类型字典同样可以用来存储多个数据通常用于存储描述一个物体的相关信息。
和列表的区别
列表是有序的对象集合字典是无序的对象集合
6.2 字典的定义
字典用 {}定义
字典使用键值对存储数据,键值对之间使用,分隔
键 key 是索引
值 value 是数据键和值之间使用:分隔
键必须是唯一的
值可以取任何数据类型
键只能使用 字符串、数字或元组
xiaoming = { "name": "小明", "age": 18, "gender": True, "height": 1.75 } # 空字典 d1 = {} # 空字典 d1 = dict() d2 = { 'name': '麻辣龙虾', 'taste': '美味' } d3 = dict(a=1, b=2) d4 = dict([('a', 1), ('b', 2)]) d5 = dict({'a': 1, 'b': 2})
7.集合
7.1 概念
不允许有重复元素,如果添加重复元素,则会自动过滤,可以进行交集、并集的运算。
是一种无序且无重复元素的数据结构
与dict类似,是一组key的集合(不存储value)
7.2 集合创建
和dict类似,如果写key,value则是字典,如果只写value则是集合。
8.可变类型和不可变类型
不可变数据类型在创建后,其值就不能被改变。Python中的以下数据类型是不可变的:
1.数字(例如:int, float, complex)
2.字符串(例如:str)
3.元组(例如:tuple)
4.布尔类型(例如:bool)可变数据类型的值可以在创建后被改变。Python中的以下数据类型是可变的:
1.列表(例如:list)
2.字典(例如:dict)
3.集合(例如:set)
8.知识总结及练习题
8.1 导图
8.2 单词
案例
1.用户登录系统
账号密码,黑名单,黑名单无法登陆,账号不存在直接退出,密码错误三次直接退出。
user_list = {'user1': '123456', 'user2': '123456', 'user3': '123456', 'user4': '123456'} black_list = ['user4'] pass_count = 0 user_name = input("请输入用户名") if user_name in user_list: if user_name not in black_list: while True: pass_word = input("请输入密码") if user_list[user_name] != pass_word: pass_count += 1 print("账号密码错误,还有", 3 - pass_count, "次机会") if pass_count >= 3: black_list.append(user_name) print("输入次数超过限制") break else: print("登录成功") break else: print("账号已加入黑名单") else: print("账号未注册")
2.年月日计算
输入一个年月日,计算出是今年的第几天。
date = input("请输入年月日").split("-") year = int(date[0]) mounth = int(date[1]) day = int(date[2]) print(year, mounth, day) day31 = [1, 3, 5, 7, 8, 10, 12] day30 = [4, 6, 9, 11] is29 = False sum_day = 0 # 循环月份 count = 1 while count < mounth: sum_day += 28 if count in day31: sum_day += 3 elif count in day30: sum_day += 2 if count == 2: # 计算是否为闰年 if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): sum_day += 1 count += 1 sum_day += day print(sum_day)
七、异常处理
1.什么是异常
1.如果代码没有语法问题,可以运行,但会出运行时的错误,例如除零错误,下标越界等问题,这种在运行期间检测到的错误被称为异常。
2.出现了异常必须处理否则程序会终止执行,用户体验会很差。
3.Phthon支持程序员自己处理检测到的异常。
4.可以使用try-except语句进行异常的检测和处理。
2.python中常见的异常类型
3try-except语句
1、首先执行try中【代码块A】,如果出现异常,立即终止代码执行,转而到except块中进行异常处理
2、异常处理except模块可以多个,从上往下匹配,如果能够匹配成功,立即执行相应的异常处理代码块,执行完毕后,不在往下匹配,转到3执行
3、执行异常处理完毕后,如果有finally字句则执行finally字句,如果没有则执行【后续语句】
4、如果匹配不到异常,有finally则执行finally,然后则抛出错误,终止程序执行。
5、如果没有异常,如果有else字句则执行else字句,执行完else后,有finally字句则执行,没有则执行【后续语句】
4 raise关键字
raise可以手动抛出一个系统的错误
5 知识总结及练习题
5.1导图
5.2 单词
八、函数
1.函数
1.1 什么是函数
使用关键字def确定函数名称、参数名称、参数个数、编写函数体(用于实现函数功能的代码)
1.2 函数的调用
通过函数名称进行调用函数定义好函数方后,只表示这个函数封装了
代码而已如果不主动调用函数,函数是不会主动执行的
1.3函数的参数
形参:就是函数定义时小括号 里的参数,是用来接收参数用的,在函数内部作为变量使用
实参:函数调用的时候,小括号里的参数,是用来把数据传递到函数内部用的
函数可以没有形参和实参
1.4 函数的参数类型
位置参数:
要求实参顺序必须和形参顺序完全一致,由形参顺序决定实参顺序。缺省参数:
定义函数时,可以给 某个参数指定一个默认值,具有默认值的参数就做缺省参数。
可变参数:
传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个,用*变量定义。
2.变量作用域
全局变量 & 局部变量
局部变量是在函数内部 定义的变量,只能在函数内部使用。全局变量是在函数外部定义 的变量,所有函数内部都可以使用这个变量。
3.匿名函数
lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方优点:让代码更加精简不需要考虑命名的问题
4.内置函数
5.知识总结及练习题
5.1 导图
5.2 单词
九、模块
1.模块的导入与使用
1.1 模块的导入
模块 就好比是 工具包,要想使用这个工具包中的工具,就需要导入import 这个模块。
每一个以扩展名 py 结尾的 python源代码文件都是一个模块。
在模块中定义的 全局变量 、函数都是模块能够提供给外界直接使用的工具。
import my_module from my_module import add, author from my_module import * from my_module import add as f
2.包的使用
2.1包的概念
包是Python模块的一种组织形式将多个模块组合在一起,形成一个大的Python工具库。包通常是一个拥有__init_-.py文件的目录,它定义了包的属性和方法。
import pack1.module1from packl import module1
3.常见的标准库
4.第三方库
正则表达式处理
可以用于文本搜索替换、分割等
5.知识总结及练习题
5.1 导图
5.2 单词
十、文件IO
1.文件相关概念
文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片程序等等。计算机文件基本上分为二种:二进制文件(没有统一的字符编码)和纯文本文件(有统一的编码,可以被看做存储在磁盘上的长字符串)。
纯文本文件编码格式常见的有 ASCI、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16等。
二进制文件与文本文件的一个最主要的区别在于是否有统一的字符编码格式,二进制文件顾名思义是直接由0与1组成,无统一的字符编码。如图片文件(jpg、png),视频文件(avi)等。
1.1.绝对路径与相对路径
绝对路径指的是从根目录开始到文件或者文件夹所在位置的完整路径。
相对路径则是相对于当前工作目录来确定文件或者文件夹的位置。
1.2 打开文件的模式
mode 解释 r 只读【默认模式,文件必须存在,不存在则抛出异常】 w 只写,写之前会清空文件的内容,如果文件不存在,会创建新文件 a 追加的方式,在原本内容中继续写,如果文件 不存在,则会创建新文件 r+ 可读可写 w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 b rb、wb、ab、rb+、wb+、ab+意义和上面一样,用于二进制文件操作
2.文件的读取
1.2.读取文件的步骤
打开文件==》读取文件内容==》关闭文件
# 打开文件 f = open("test.txt") # 读取文件 content=f.read() print(content) # 关闭文件 f.close()
3.文件的写入
打开文件==》写文件内容==》关闭文件
# 打开文件 f = open('test.txt',mode='w',encoding='utf-8') # 写入文件内容 f.write('你好,') # 关闭文件 f.close()
4.with语句
帮助关闭文件,不用手动关闭。
with open('test.txt',mode='r',encoding='utf-8')as f: context =f.read() print(context)
5.csv文件处理
import csv # csv读取 with open('test.csv',mode='r',encoding='utf-8')as f: cf = csv.reader(f) for e in cf: print(e) # csv写入 with open('test.csv',mode='a',encoding='utf-8')as f: cw = csv.writer(f) cw.writerow(["tom","java",100])
6 知识总结及练习题
6.1 导图
6.2 单词
十一、面向对象
1.面向对象的基本概念
1.1类的定义
class:表明这是一个类
ClassName:类的名字
():父类集合的开始和结束
object:父类的名字,定义的类继承自父类,可以不写,默认是object。object是所有类的直接或间接父类
class className(object): <statement-1> <statement-N>
1.2 创建类
实例名 =类()的方式实例化对象为类创建一个实例