Day--02变量与运算符

本文介绍了Python中的变量使用,包括变量作为数据容器的特性,无需预声明类型,以及重新赋值时的内存管理。此外,还讨论了算术、比较和逻辑运算符的用法,以及赋值运算符的规则。文章强调了Python在效率和灵活性之间的权衡,并提供了示例代码来说明这些概念。
摘要由CSDN通过智能技术生成

python基础知识–变量和运算符

程序使用数据的两种方式:

(1) 直接使用数据

`print(50)

50

缺点:当需要多次使用数据时,造成重复使用困难;需要对某个数据进行修改时,需要对这个数据的所有位置进行修改。

(2) 先将数据保存到变量中,然后通过使用变量来使用数据

1.变量

变量是存放数据值的容器,其存放在内存中。在python语言中,不需要声明变量类型,当我们在给变量赋值之后变量才会被创建(变量必须先定义再使用)。定义完变量之后可以重新给变量赋值,重新后再使用变量,使用的是新的值。

变量的底层逻辑

(1)python变量存储数据和重新赋值的底层原理

a.定义变量

在定义变量时,系统会申请内存(内存的大小取决于数据的大小)去保存数据,但与c和java不同的是python不会考虑数据类型,只会计算数据的大小,根据大小分配内存,这就导致python比较Java和c而言,运行效率比较慢(Java和C首先考虑数据的类型,然后考虑数据的大小接接着分配合适的内存,python只考虑数据的大小,这就使python比Java和C简洁,同样因为python需要计算数据大小,导致python比Java和C运行效率慢)。

b.重新赋值

python与c和Java不同的是,python重新赋值可以赋不同类型的值,而c和java语言只能赋同类型的值。Java和C在定义变量的时候声明了数据的类型,这就导致在重新赋值的时候只能赋相同类型的值(例 :圆形的坑放不进去方形的物体)。

python在重新赋值时会根据新的数据申请一个新的内存空间,把新的数据存储到新的内存空间中,将变量和新的内存空间关联起来,再将原有的内存空间销毁。

优点:不用考虑数据的类型

缺点:速度,执行效率慢(重新计算数据大小)

id函数-获取变量对应内存地址

例如:

a=10
print(id(a))

#结果
2066146552400  
1.1 语法

(1)单变量赋值

变量名=数据

等号左边是变量名,等号右边是存储在变量中的值。这些值可以是不同的数据类型,也可以是某个表达式的结果。使用变量就是使用变量中保存的数据,所以数据能做的事情,保存数据的变量都可以做。

number=100
print(number+200)

print(type(number))
print(str(number))

#结果
300
<class 'int'>
100

变量的名字不是随意命名,必须符合命名要求:是标识符,不是关键字,同时变量也要遵守规范:

a.见名知义(看到变量名就能大概知道变量中保存的是什么数据)

name="落石"
age=18
height="173.5"

print(age,name,height)
#结果:

18 落石 173.5

b.不使用系统函数名(比如print,input,type…),类名和模块名

注意:使用系统函数命名不会报错,但会导致函数本身功能消失

print=100

print("这是字符串")

#结果
    print("这是字符串")
TypeError: 'int' object is not callable

c.所有字符都小写(python中严格区分大小写),多个单词之间用下划线隔开(例如:stu_name)

(2)多变量赋值

a.多个变量赋同一个值

变量名1=变量名2=变量名3=…=数据

例如:

a=b=c=10
print(a,b,c)

#结果
10 10 10

b.多个变量赋不同的值

变量名1,变量名2,变量名3,…=数据1,数据2,数据3,…

在对多个变量进行赋值时,多个变量之间用逗号隔开。但在进行赋值时,数据的个数与变量个数要一致,如果个数不一致会导致运行出错。

a,b,c=10,16.0,"这是c"  
#整型对象10分配给a,浮点型对象16.0分配给b,字符串对象"这是c"分配给c
print(a,b,c)

#结果1
10 16.0 这是c

#结果2
    a,b,c=10,16.0
ValueError: not enough values to unpack (expected 3, got 2)
#案例:交换两个变量的值
#方法1:直接交换
m=100
n=200
m,n=n,m
print(m,n)
#方法:中间变量
m=100
n=200
p=m
m=n
n=p
print(m,n)

#结果
200 100

2.运算符

数学(算术)运算符,逻辑运算符,赋值运算符,比较运算符

2.1(算术)数学运算符

所有的算术运算符:+(加),-(减),*(乘),/(除),%(取余,取模),//(整除),**(幂运算)

如果运算对象中有一个浮点数,那么结果一定是浮点数(应用于所有的数学运算符)。除法运算符的运算结果一定时浮点数。

a = 21
b = 10
c = 0

c = a + b
print("1 - c 的值为:", c)


c = a - b
print("2 - c 的值为:", c)


c = a * b
print("3 - c 的值为:", c)


c = a / b
print("4 - c 的值为:", c)

#结果
1 - c 的值为: 31
2 - c 的值为: 11
3 - c 的值为: 210
4 - c 的值为: 2.1


#取余
#应用场景:
#1)判断一个数是否能够被另一个数整除(判断余数是否为0)
#2)取整数的低位数(取个位%10,后两位数%100,后三位数%1000)--对10的N次方取余,就可以获取到这个数的后N位数

a=35435
print(a%10)
print(a%100)
print(a%1000)
print(a%10000)
print(a%100000)
#结果
5
35
435
5435
35435


# 修改变量 a 、b 、c
a = 2
b = 3
#幂运算
c = a ** b
print("c 的值为:", c)
print(4**-2)
print(8**(1/3))#1/3相当于开三次方
print(10000**0.5) #0.5为1/2,1/2相当于开方

#结果
c 的值为: 8
0.0625
2
100

#整除-求商,商向小取整
#应用场景:(1)求一个数中有多少个完整的另一个数
#已知t为秒数,求t可以换算为多少个小时
t=543545
print(t//3600)
#结果
150
#(2)去掉整数的低位数,保留高位数
print(89//10)
print(785//100)
print(456//10)
print(6888//1000)
#结果
8
7
45
6

#案例:无论数值怎么变,都取到百位
#方法1:先取后三位,再取百位
num=int(input("请输入数字:"))
print(num%1000//100)
#结果
请输入数字:896357
3

#方法2:先去掉后两位,再取百位
num = int(input("请输入数字:"))
a = num // 100 % 10
print(a)
#结果
请输入数字:896357
3

2.2 比较运算符

所有的比较运算符:>(大于),<(小于),==(等于),!=(不等于),>=(大于等于),<=(小于等于)

所有的比较运算符的运算结果都是布尔值:True,False

python中的比较运算符支持连写表示范围,例如:50<=60<=80(表述60大于等于50小于等于80)

print(100>200)
print(100<200)
print(100==100)
print(100!=100)
print(100>=50)
print(100<=200)

#结果
False
True
True
False
True
True

num=800
print(num%2==0)#判断是否为偶数
#结果
True


score=80
print("是否是中等成绩:",70<=score<90)

#结果
True
2.3 逻辑运算符

所有的逻辑运算符:and(逻辑与运算),or(逻辑或运算),not(逻辑非运算)

运算符逻辑表达式描述
andx and y布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
orx or y布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
2.3.1 and(逻辑与运算)

(1)应用场景:用于来链接要求同时成立 的两个条件,相当于生活中的‘并且’

(2)运算规则:条件1 and 条件2

​ --如果两个条件同时成立结果都是True

​ --如果两个条件其中任一条件不满足,结果都是False

​ – 如果两个条件都不满足,结果是False

​ --True and True -->True

​ – True and False --> False

​ – False and False -->False

​ --False and True -->False

案例:

#判断num能同时被3和8整除(是指余数为0)
num = 83
print(num % 3 ==0 and num % 8==0)

#结果
False

#判断num是否是能被7整除的偶数
num = int(input("请输入数字:"))
print("能否被7整除的偶数:", num % 7 == 0 and num % 2 == 0)

#结果
True
2.3.2 or(逻辑或运算)运算

(1)应用场景:如果要去两个或多个条件有一个条件成立就行,用or连接,相当于生活中的“或”

(2)运算规则:条件1 or 条件2 --只要有一个条件成立,结果都是True,只有当两个条件同时不成立的时候才是False

​ --True and True -->True

​ – True and False --> True

​ – False and False -->False

​ --False and True -->True

案例:

num = 89
print("num是否能被3或者7整除:", num % 3 == 0 or num % 7 == 0)

year = int(input("请输入年份:"))
print("是否是闰年:", (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))


#结果
num是否能被3或者7整除: False
请输入年份:2022
False
2.3.3 not(逻辑非运算)

(1)应用场景:对条件进行否定

(2) 运算规则:not 条件 —对指定条件进行否定

​ --not True -->False

​ – not False --> True

案例:

age = 28
print(not age > 18)
num=20
print(not num % 5 == 0)

#结果
False
False
2.3.4 赋值运算

所有运算符:=(普通运算符),+=(加等于),-=(减等于),*=(乘等于),/=(除等于),%=(取余等于),//=(整除等于),**=(幂等于)

注意:

a.所有赋值运算符最终的功能都是完成对变量的赋值操作(将数据保存到变量中)

b.所有的读之运算都没有结果,无法提供数据

=(普通运算符):a=6

其余赋值运算符运算规则都相同,都是先运算,再赋值

变量+=数据(先将变量中保存的数据取出来,和后面的数据进行加法运算,然后将运算结果重新赋值给变量)

注意:复合的赋值运算符前面的变量必须是已经赋值过的变量

例如:

a=6
#a=a+5
a+=5
print(a)
a*=3
print(a)
a/=11
print(a)
a**=3
print(a)
#结果
11
33
3.0
27.0
2.4 运算符优先级

1.数学运算符(最高)>比较运算符>逻辑运算符>赋值运算符(最低)

2.* *> *、/、%、// >+、-

3.and >or

4.有括号先算括号里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值