Python基础
变量和数据类型
数据类型
在计算机程序中,我们通常需要处理各种各样的数据,不同的数据对应不同的数据类型。
Python支持的数据类型包括:
基本数据类型:
数据类型 | 描述 | 举例 |
---|---|---|
int | 整型 | 1、-5、100 |
float | 浮点型(小数) | 3.14、-0.5、1.0 |
bool (True 1 False 0) | 布尔型 | True、False |
complex | 复数型 | 1+2j、-3+4j |
高级数据类型
数据类型 | 描述 | 举例 |
---|---|---|
str | 字符串 | "Hello" |
list | 列表 | [1, 2, 'a', True] |
tuple | 元组 | (1, 2, 'a', True) |
set | 集合 | {1, 2, 3, 4} |
dict | 字典 | { 'name': 'John', 'age': 25, 'city': 'BJ' } |
变量
变量定义
变量是用来描述计算机中的数据存储空间的,我们可以通过变量来保存定义的数据
变量名 = 变量值
# 定义整型变量
age = 30
# 定义浮点类型变量
score = 70.5
# 定义布尔类型变量
b = True
# 定义字符串类型变量
name = '张三'
可以通过type()
函数获取变量类型
name = '张三'
# 获取变量类型
t = type(name)
Python是动态类型语言,变量类型可以通过赋值进行修改
# 定义整型变量
age = 30
# 修改成浮点类型变量
age = 70.5
变量的命名规则
变量名的定义需要遵守下面的规则:
- 只能由数字、字母、_(下划线)组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
Python中的关键字包括:
如下这些变量名都是不合法的:
a-b = "aaa"
itcast.cn = '李四'
123abc = "haha"
for = 123
变量的命名规范
为了让我们代码更加简洁易懂,还需要遵守下面的命名规范
- 下划线命名法
student_name = '张三'
- 驼峰命名法
# 大驼峰命名法
StudentName = '张三'
# 小驼峰命名法
studentName = '李四'
算术运算符
数值之间
数值之间的操作用到的运算如如下:
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
// | 取整除 |
% | 取余数 |
** | 幂 |
数值型变量之间可以直接计算
a=5
b=2
print(a+b)#7
print(a-b)#3
print(a*b)#10
print(a/b)#2.5 注意不是整除了
print(a//b)#2 两条是整除
print(a%b)// 1
print(a**b) //25
字符串之间
字符串之间使用+拼接字符串
str1 = 'hello'
str2 = 'world'
str3 = str1 + str2
print(str3)
输出结果:
helloworld
整形和字符串
字符串变量和整型使用*
,用于重复拼接相同的字符串
str = 'hello'
s = str*5
print(s)
输出结果:
hellohellohellohellohello
数值变量和字符串不能进行其它计算
str = 'hello'
a = 10
# 错误,字符串和数字不能直接相加
result = str+a
print(result)
输入与输出
输出函数
程序可以通过输出函数将程序执行的数据输出到控制台
Python中的输出函数是print()
# 直接输出数据
print(10)
name = '张三'
# 输出变量
print(name)
# 输出多个数据和变量
print(10,name)
age=19
print("年龄为age",age)
#使用占位符
print("年龄为%d岁" % age)
a=10
b=20
# 有多个参数,用()隔开
print("%d %d" % (a,b))
# 使用占位符{}
i=1
j=10
print("{}*{}={}".format(i,j,i*j)) #1*10=10
print默认是换行的,使用end改变默认的end=‘\n’
print("hello",end=' ')
print("world")
打印结果:
hello world
输入函数
输入函数用来接收用户从控制台输入的数据
Python中的输入数是input()
# 输入年纪
age = input('请输入年纪')
print(age)
input输入的数据都为str
字符串类型
# 输入年纪
age = input('请输入年纪')
# 获取age类型
t = type(age)
print(t)
输出结果:
<class 'str'>
可以使用int()
将输入的数据转换成int
类型
age=input("请输入年龄")
print(age,type(age))#str
age=int(age)
print(age,type(age))#int
常见运算符
赋值运算符
赋值运算符主要用来对变量进行赋值,包括如下这些:
运算符 | 描述 |
---|---|
= | 赋值 |
+= | 加等于 |
-= | 减等于 |
*= | 乘等于 |
/= | 除等于 |
//= | 整除等于 |
%= | 模等于 |
**= | 幂等于 |
实例如下:
a = 10
a += 5 # 等价于 a = a+5
a *=2 # 等价于 a = a*2
比较运算符
比较运算符主要用来比较两个数据的大小,包括如下这些:
运算符 | 描述 |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
逻辑运算符
逻辑运算符主要用在布尔类型的数据,返回结果还未布尔型数据,包括如下:
运算符 | 描述 |
---|---|
and | 逻辑与 |
or | 逻辑或 |
not | 逻辑非 |
and逻辑与
必须两个都为True
才返回True
r = True and True
print(r)
r = True and False
print(r)
结果:
True
False
or逻辑或
只要两个中有一个为True
结果就为True
r = True or False
print(r)
r = False or False
print(r)
结果:
True
False
not逻辑非
取反操作
r = not True
print(r)
r = not False
print(r)
结果:
False
True
条件判断语句
if 语句
if语句格式:
if 条件:
条件成立时,要做的事情
……
判断年龄
需求:
- 定义一个整数变量记录年龄
- 判断是否满 18 岁 (>=)
- 如果满 18 岁,允许进网吧嗨皮
代码如下:
age = int(input('请输入你的年纪:'))
# if判断
if age >= 18:
print('允许进网吧嗨皮')
注意:Python中没有大括号{}
,通过缩进代表作用域
if…else…语句
有些情况我们希望满足条件执行相应的代码,不满足条件执行其他的代码,这就需要用到if else
语句if ... else...
语句格式
if 要判断的条件:
条件成立时,要做的事情
……
else:
条件不成立时,要做的事情
……
判断年龄
需求:
- 输入用户年龄
- 判断是否满 18 岁 (>=)
- 如果满 18 岁,允许进网吧嗨皮
- 否则(未满 18 岁),提示回家写作业
代码如下:
age = int(input('请输入你的年纪:'))
# if判断
if age > =18:
print('允许进网吧嗨皮')
else:
print('回家写作业')
if …elif… else语句
一对 if 和 else 可以让代码执行出 两种不同的结果
但开发中,可能希望 并列的执行出多种结果,这时就可以使用 elif
if ...elif... else
格式
if 条件1:
条件1满足执行的代码
……
elif 条件2:
条件2满足时,执行的代码
……
elif 条件3:
条件3满足时,执行的代码
……
else:
以上条件都不满足时,执行的代码
……
扩展知识:
eval()
函数的作用是将一个字符串当作Python代码进行解析和执行。它接受一个字符串作为参数,并将该字符串解析为一个表达式,并返回表达式的计算结果。
result = eval('2 + 3 * 4') # 14
x = 5
eval('x = x + 1')
print(x) # 6
需要注意的是,由于eval()
函数的功能是执行字符串中的代码,它可能会带来一些安全风险。如果接受用户输入作为eval()
函数的参数,请确保对输入进行验证和过滤,以防止恶意代码执行或潜在的安全漏洞。在使用eval()
函数时要谨慎,并确保只执行可信任的代码。
循环
while循环
# 1.定义循环变量
i = 1
# 2.使用while判断条件
while i <= 10000:
# 要重复执行的代码
print('hello')
# 3.修改循环变量
i += 1
打印九九乘法表
row=1 #行
col=1 #列
while row<=9:
while col<=row:
print("%d*%d=%d" %(col,row,col*row),end='\t')
col+=1
print()
col=1
row+=1
for循环
for
循环的主要作用是遍历数据(容器))中的元素。字符串、列表等高级数据类型都属于容器,都可以通过for
循环遍历
for
循环的语法格式如下:
for 临时变量 in 列表或字符串等可迭代对象:
执行的代码
需求:
打印字符串’hello world’中每一个字符
str = 'hello world'
# ele普通变量 接收容器中的元素
for s in str:
print(s)
in和not in
in
操作符用于判断元素是否存在于容器中,如果在容器中,返回 True
,否则返回 False
str = 'hello'
result = 'h' in str
print(result) #True
result = 'e' not in str
print(result) #False
range区间
range()
可创建一个整数列表。range()
相当于数学中的左闭右开区间(包含左,不包含右)
我们先看看数学中的区间:
全开全闭区间
- 开区间:
(1,10)
不包含1和10 - 闭区间:
[1,10]
包含1和10
半开半闭区间
- 左开右闭区间:
(1,10]
包含10不包含1 - 左闭右开区间:
[1,10)
包含1不包含10
range的定义
# 定义0到10的区间(包含0,不包含10) [0,10)
arr = range(0, 10)
如果区间从0开始可以省略0
# 定义0到10的区间(包含0,不包含10)
arr = range(10)
倒序的区间定义
# 定义从10到1的区间,参数分别代表 start开始, stop结束, step步长
arr = range(10, 0, -1)
区间可以通过for进行遍历
# 定义0到10的区间(包含0,不包含10)
arr = range(0, 10)
# 遍历区间
for ele in arr:
print(ele)
break和continue
**break**
和**continue**
是专门在循环中使用的关键字
- break:某一条件满足时,不再执行循环体中后续代码,并退出循环
- continue:某一条件满足时,不再执行本次循环体中后续代码,但进入下一次循环判断
循环结合 else
循环也可以像if
语句一样结合else
。
else
中的语句会在循环正常执行完(即没有通过 break
或其他异常情况中断循环)的情况下执行,while
循环也是如此
格式:
for 变量 in 容器:
循环体代码
else:
没有通过break退出循环, 循环结束后, 会执行的代码
**for else,**会执行else中的代码
str = 'hello world'
for ele in str:
print(ele)
else:
print('执行了else语句')
**for else中执行了continue,**会执行else中的代码
for ele in str:
if ele == 'l':
continue
print(ele)
else:
print('执行了else语句')
**for else中执行了break,**else语句不会执行
for ele in str:
if ele == 'l':
break
print(ele)
else:
print('else语句不会执行')
高级数据类型
list列表
列表 是 Python 中使用 最频繁 的数据类型,专门用于存储 一串 数据,存储的数据 称为 元素
列表的类型是:list
列表的定义
列表用[]
定义,元素之间用逗号,
分隔
namesList = ['林青霞','张曼玉','胡慧中']
访问列表的元素
查找列表中元素是按照列表索引进行查找的。索引 就是元素在 列表 中的位置编号,又可以被称为 下标
索引是从0开始的,例如:第一个元素,索引就为0
namesList = ['林青霞','张曼玉','胡慧中']
# 获取第二个人
name = namesList[1]
print(name)
遍历列表
可以通过for遍历列表中的元素
namesList = ['林青霞','张曼玉','胡慧中']
# 遍历列表
for name in namesList:
print(name)
列表的操作
列表可以增加新的元素,删除元素,修改元素。还可以对列表进行排序等操作
增加元素
通过append
增加新元素
namesList = ['林青霞','张曼玉','胡慧中']
# 增加高圆圆
namesList.append('高圆圆')
print(namesList)
结果:
['林青霞', '张曼玉', '胡慧中', '高圆圆']
删除元素
①通过pop
删除指定索引元素,返回删除的内容
namesList = ['林青霞','张曼玉','胡慧中']
# 删除张曼玉
namesList.pop(2)
print(namesList)
# ['林青霞','张曼玉']
②通过remove
方法删除指定内容元素
namesList = ['林青霞','张曼玉','胡慧中']
# 删除张曼玉
namesList.remove('张曼玉')
print(namesList)
结果:
['林青霞', '胡慧中']
修改元素
通过 列表[索引]=新数据
修改元素
namesList = ['林青霞','张曼玉','胡慧中']
# 将张曼玉修改成高圆圆
namesList[1] = '高圆圆'
print(namesList)
结果:
['林青霞', '高圆圆', '胡慧中']
查询
①通过 列表[索引]
获取元素
namesList = ['林青霞','张曼玉','胡慧中']
# 查找第二个元素
ele = namesList[1]
print(ele)
结果:
张曼玉
②通过 列表.index(元素值)
查找元素的索引
namesList = ['林青霞','张曼玉','胡慧中']
# 查找元素张曼玉的索引
index = namesList.index('张曼玉')
print(index)
结果:
1
列表的排序
通过 列表.sort()
对列表进行升序排序
ageList = [90,10,30,20,50,70]
# 从小到大 升序
ageList.sort()
print(ageList)
结果:
[10, 20, 30, 50, 70, 90]
通过 列表.sort(reverse=True)
对列表进行降序排序
ageList = [90,10,30,20,50,70]
# 从大到小 降序排序
ageList.sort(reverse=True)
print(ageList)
结果:
[90, 70, 50, 30, 20, 10]
通过 列表.reverse()
对列表进行反转
ageList = [90,10,30,20,50,70]
# reverse 将列表进行反转
ageList.reverse()
print(ageList)
结果:
[70, 50, 20, 30, 10, 90]
列表的嵌套
列表中的元素可以是列表类型的数据,就称为列表的嵌套
嵌套列表的定义:
students = [
['林青霞','狄龙','郑少秋'],
['张曼玉','梁朝伟']
]
查询元素
# 查询郑少秋
student = students[0][2]
修改元素
# 修改张曼玉位高圆圆
students[1][0] = '高圆圆'
字符串分割成列表
str="1|2|3|4"
lst=str.split("|")
print(lst,type(lst))
列表拼接成字符串
# 1 2 3 4
str2=" ".join(lst)
print(str2)
tuple元组
Python的元组与列表类似,也是容器的一种,不同之处在于元组的元素不能修改
- 用于存储 一串 数据,元素之间使用 , 分隔
- 元组的索引从
0
开始 - 元组的类型:tuple
元组的定义
元组用 ()
定义
names_tuple = ('林青霞','张曼玉','胡慧中')
注意:一个元素的元组定义需要在元素后加上,
# 错误定义方式 ❌
names_tuple = ('林青霞')
# 正确定义方式 ✅
names_tuple = ('林青霞',)
自动组包
t
的类型是元组类型,这就是元组的自动组包特征
t = '张三','李四','王五'
自动解包
t = ('张三','李四','王五') #定义元组
name1,name2,name3 = t
print(name1,name2,name3)
交换数据
a=10
b=20
b,a=a,b
让列表不可修改
有时我们传递列表数据给别人使用,希望别人不要修改列表
可以把列表转换成元组,这样就变成了不可变的数据
lst = [10, 20, 30]
# 将列表转换成元组
tp = tuple(lst)
# 不可执行如下类似操作
tp[0] = 111
tp.append(222)
如果运行执行会报出如下错误:TypeError: 'tuple' object does not support item assignment
函数
函数定义
def fun():
print("hello world")
fun() #函数调用
def fun():
"""
这是函数的文档注释
:return:
"""
print("hello world")
fun()
函数多返回值
函数可以返回多个结果
def calc(a, b):
'''
求a+b以及a-b的结果
:param a:
:param b:
:return: 结果的元组
'''
sum = a + b
sub = a-b
return sum, sub
上面函数同时返回了两个数的和以及两个数的差
返回的结果会自动组包成为一个元组数据,接收的时候可以分别接收sum、sub
# 分别接收和以及差
sum, sub = calc(10, 20)
函数的四种类型
函数按照是否有参数以及返回值可以将函数分成四种类型
无参无返回值
def say_hello():
print('hello')
无参有返回值
import random
def get_temp():
return random.randint(0,100)
有参无返回值
def say_hello(name):
print('hello %s'%name)
有参有返回值
def sum(a, b):
return a + b
函数内修改全局变量
如果要在函数内部修改全局变量 需要首先使用global关键字将声明全局变量
a=10
def fun():
#使用global声明全局变量
global a
a=20
print(a) #20
fun()