Python基础

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' }

变量

变量定义

变量 是用来描述计算机中的数据存储空间的,我们可以通过变量来保存定义的数据

变量名 = 变量值

python 复制代码
# 定义整型变量
age = 30
# 定义浮点类型变量
score = 70.5
# 定义布尔类型变量
b = True
# 定义字符串类型变量
name = '张三'

可以通过type()函数获取变量类型

python 复制代码
name = '张三'
# 获取变量类型
t = type(name)

Python是动态类型语言,变量类型可以通过赋值进行修改

python 复制代码
# 定义整型变量
age = 30
# 修改成浮点类型变量
age = 70.5
变量的命名规则

变量名的定义需要遵守下面的规则:

  1. 只能由数字、字母、_(下划线)组成
  2. 不能以数字开头
  3. 不能是关键字
  4. 区分大小写

Python中的关键字包括:

如下这些变量名都是不合法的:

python 复制代码
a-b = "aaa"
itcast.cn = '李四'
123abc = "haha"
for = 123
变量的命名规范

为了让我们代码更加简洁易懂,还需要遵守下面的命名规范

  1. 下划线命名法
python 复制代码
student_name = '张三'
  1. 驼峰命名法
python 复制代码
# 大驼峰命名法
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
字符串之间

字符串之间使用+拼接字符串

python 复制代码
str1 = 'hello'
str2 = 'world'
str3 = str1 + str2
print(str3)

输出结果:

复制代码
helloworld
整形和字符串

字符串变量和整型使用*,用于重复拼接相同的字符串

python 复制代码
str = 'hello'
s = str*5
print(s)

输出结果:

复制代码
hellohellohellohellohello

数值变量和字符串不能进行其它计算

python 复制代码
str = 'hello'
a = 10
# 错误,字符串和数字不能直接相加
result = str+a
print(result)

输入与输出

输出函数

程序可以通过输出函数将程序执行的数据输出到控制台

Python中的输出函数是print()

python 复制代码
# 直接输出数据
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()

python 复制代码
# 输入年纪
age = input('请输入年纪')
print(age)

input输入的数据都为str字符串类型

python 复制代码
# 输入年纪
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

常见运算符

赋值运算符

赋值运算符主要用来对变量进行赋值,包括如下这些:

运算符 描述
= 赋值
+= 加等于
-= 减等于
*= 乘等于
/= 除等于
//= 整除等于
%= 模等于
**= 幂等于

实例如下:

python 复制代码
a = 10
a += 5 # 等价于  a = a+5
a *=2 # 等价于 a  = a*2

比较运算符

比较运算符主要用来比较两个数据的大小,包括如下这些:

运算符 描述
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

逻辑运算符

逻辑运算符主要用在布尔类型的数据,返回结果还未布尔型数据,包括如下:

运算符 描述
and 逻辑与
or 逻辑或
not 逻辑非
and逻辑与

必须两个都为True才返回True

python 复制代码
r = True and True
print(r)
r = True and False
print(r)

结果:

复制代码
True
False
or逻辑或

只要两个中有一个为True结果就为True

python 复制代码
r = True or False
print(r)
r = False or False
print(r)

结果:

复制代码
True
False
not逻辑非

取反操作

python 复制代码
r = not True
print(r)
r = not False
print(r)

结果:

复制代码
False
True

条件判断语句

if 语句

if语句格式:

复制代码
if 条件:
    条件成立时,要做的事情
    ......

判断年龄

需求:

  1. 定义一个整数变量记录年龄
  2. 判断是否满 18 岁 (>=)
  3. 如果满 18 岁,允许进网吧嗨皮
    代码如下:
python 复制代码
age = int(input('请输入你的年纪:'))
# if判断
if age >= 18:
    print('允许进网吧嗨皮')

注意:Python中没有大括号{},通过缩进代表作用域

if...else...语句

有些情况我们希望满足条件执行相应的代码,不满足条件执行其他的代码,这就需要用到if else语句
if ... else...语句格式

复制代码
if 要判断的条件:
    条件成立时,要做的事情
    ......
else:
    条件不成立时,要做的事情
    ......

判断年龄

需求:

  1. 输入用户年龄
  2. 判断是否满 18 岁 (>=)
  3. 如果满 18 岁,允许进网吧嗨皮
  4. 否则(未满 18 岁),提示回家写作业
    代码如下:
python 复制代码
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代码进行解析和执行。它接受一个字符串作为参数,并将该字符串解析为一个表达式,并返回表达式的计算结果。

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)

倒序的区间定义

python 复制代码
# 定义从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

列表的定义

列表用[]定义,元素之间用逗号,分隔

python 复制代码
namesList = ['林青霞','张曼玉','胡慧中']
访问列表的元素

查找列表中元素是按照列表索引进行查找的。索引 就是元素在 列表 中的位置编号,又可以被称为 下标

索引是从0开始的,例如:第一个元素,索引就为0

python 复制代码
namesList = ['林青霞','张曼玉','胡慧中']
# 获取第二个人
name = namesList[1]
print(name)
遍历列表

可以通过for遍历列表中的元素

python 复制代码
namesList = ['林青霞','张曼玉','胡慧中']
# 遍历列表
for name in namesList:
    print(name)
列表的操作

列表可以增加新的元素,删除元素,修改元素。还可以对列表进行排序等操作

增加元素

通过append增加新元素

python 复制代码
namesList = ['林青霞','张曼玉','胡慧中']
# 增加高圆圆
namesList.append('高圆圆')
print(namesList)

结果:

python 复制代码
['林青霞', '张曼玉', '胡慧中', '高圆圆']

删除元素

①通过pop删除指定索引元素,返回删除的内容

python 复制代码
namesList = ['林青霞','张曼玉','胡慧中']
# 删除张曼玉
namesList.pop(2)
print(namesList)
# ['林青霞','张曼玉']

②通过remove方法删除指定内容元素

python 复制代码
namesList = ['林青霞','张曼玉','胡慧中']
# 删除张曼玉
namesList.remove('张曼玉')
print(namesList)

结果:

复制代码
['林青霞', '胡慧中']

修改元素

通过 列表[索引]=新数据 修改元素

python 复制代码
namesList = ['林青霞','张曼玉','胡慧中']
# 将张曼玉修改成高圆圆
namesList[1] = '高圆圆'
print(namesList)

结果:

复制代码
['林青霞', '高圆圆', '胡慧中']

查询

①通过 列表[索引] 获取元素

python 复制代码
namesList = ['林青霞','张曼玉','胡慧中']
# 查找第二个元素
ele = namesList[1]
print(ele)

结果:

复制代码
张曼玉

②通过 列表.index(元素值) 查找元素的索引

python 复制代码
namesList = ['林青霞','张曼玉','胡慧中']
# 查找元素张曼玉的索引
index = namesList.index('张曼玉')
print(index)

结果:

复制代码
1
列表的排序

通过 列表.sort() 对列表进行升序排序

python 复制代码
ageList = [90,10,30,20,50,70]
# 从小到大 升序
ageList.sort()
print(ageList)

结果:

复制代码
[10, 20, 30, 50, 70, 90]

通过 列表.sort(reverse=True) 对列表进行降序排序

python 复制代码
ageList = [90,10,30,20,50,70]
# 从大到小 降序排序
ageList.sort(reverse=True)
print(ageList)

结果:

复制代码
[90, 70, 50, 30, 20, 10]

通过 列表.reverse() 对列表进行反转

python 复制代码
ageList = [90,10,30,20,50,70]
# reverse 将列表进行反转
ageList.reverse()
print(ageList)

结果:

复制代码
[70, 50, 20, 30, 10, 90]
列表的嵌套

列表中的元素可以是列表类型的数据,就称为列表的嵌套

嵌套列表的定义:

python 复制代码
students = [
    ['林青霞','狄龙','郑少秋'],
    ['张曼玉','梁朝伟']
]

查询元素

python 复制代码
# 查询郑少秋
student = students[0][2]

修改元素

python 复制代码
# 修改张曼玉位高圆圆
students[1][0] = '高圆圆'

字符串分割成列表

python 复制代码
str="1|2|3|4"
lst=str.split("|")
print(lst,type(lst))

列表拼接成字符串

python 复制代码
# 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

让列表不可修改

有时我们传递列表数据给别人使用,希望别人不要修改列表

可以把列表转换成元组,这样就变成了不可变的数据

python 复制代码
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()
函数多返回值

函数可以返回多个结果

python 复制代码
def calc(a, b):
    '''
    求a+b以及a-b的结果
    :param a:
    :param b:
    :return: 结果的元组
    '''
    sum = a + b
    sub = a-b
    return sum, sub

上面函数同时返回了两个数的和以及两个数的差

返回的结果会自动组包成为一个元组数据,接收的时候可以分别接收sum、sub

python 复制代码
# 分别接收和以及差
sum, sub = calc(10, 20)
函数的四种类型

函数按照是否有参数以及返回值可以将函数分成四种类型

无参无返回值

python 复制代码
def say_hello():
    print('hello')

无参有返回值

python 复制代码
import random
def get_temp():
    return random.randint(0,100)

有参无返回值

python 复制代码
def say_hello(name):
    print('hello %s'%name)

有参有返回值

python 复制代码
def sum(a, b):
    return a + b
函数内修改全局变量

如果要在函数内部修改全局变量 需要首先使用global关键字将声明全局变量

复制代码
a=10
def fun():
    #使用global声明全局变量
    global  a
    a=20
    print(a) #20

fun()
相关推荐
CYRUS_STUDIO1 小时前
一文搞懂 Frida Stalker:对抗 OLLVM 的算法还原利器
android·逆向·llvm
zcychong1 小时前
ArrayMap、SparseArray和HashMap有什么区别?该如何选择?
android·面试
CYRUS_STUDIO1 小时前
Frida Stalker Trace 实战:指令级跟踪与寄存器变化监控全解析
android·逆向
数据智能老司机5 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机6 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机6 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机6 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
ace望世界6 小时前
android的Parcelable
android
顾林海7 小时前
Android编译插桩之AspectJ:让代码像特工一样悄悄干活
android·面试·性能优化
c8i7 小时前
drf初步梳理
python·django