1.变量
1.1什么是变量
变量就是可以变化的量
量指的是事物的状态,比如人的年龄、性别,游戏角色的等级、金钱等等
变量是一种存去内存的机制
1.2为什么要有变量
为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
详细地说:
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。
1.3怎么使用变量
原则:先定义后使用
变量的声明由三部分组成,如下图:
定义变量三大组成部分
- 变量名:是用来访问变量值的
- 赋值符号:把值的内存地址绑定给变量名
- 变量值:记录的事物的状态,即存的数据
定义变量示范如下
age = 18 #记下年龄为18
sex = '男' #记下人的性别为男性
name = "egon" #记下名字
解释器执行到变量定义的代码时会申请内存空间存放变量值,然后将变量值的内存地址绑定给变量名,以变量的定义age=18为列
定义变量申请内存
通过变量即可引用对应的值
#通过变量名即可引用到值,我们可以结合print()功能将其打印出来
print(age) #通过变量名age找到值18,然后执行print(18),输出:18
1.4同时定义多个变量
- 同时给不同的变量赋不同的值:变量1,变量2,变量3,…=数据1,数据2,数据3,…
# 给多个变量同时赋不同的值
a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3
- 同时给不同的变量赋相同的值:变量1=变量2=变量3=…=数据
# 给不同的变量赋相同的值
c1 = c2 = c3 = 33
print(c1, c2, c3) # 33 33 33
1.5python交换变量的值
# 交换两个变量的值
x = 1
y = 2
print('x:{},y:{}'.format(x, y)) # x:1,y:2
x, y = y, x
print('x:{},y:{}'.format(x, y)) # x:2,y:1
# 交换三个变量的值
x1 = 1
x2 = 2
x3 = 3
x1, x2, x3 = x3, x1, x2
print(x1, x2, x3) # 3 1 2
2.Python运算符
2.1算数运算符
运算符 | 描述 |
---|---|
+ | 加 |
– | 减 |
* | 乘 |
/ | 除 |
% | 返回除法的余数 |
** | 幂次 |
// | 返回商的整数部分 |
运算符的运用:
(加减运算符)只要参与运算的有浮点数,返回类型为float
print(1 + 0.5) #1.5 返回类型为float
print(3 - 2.0) #1.0,只要参与运算的有浮点数,返回类型为float
(乘法、幂(次方)运算)
print(3 * 3) #*:乘号
print(3 ** 4) #**:次方
print(50-5*6) #20
print((50-5*6)/4) #5.0 有括号,括号优先
print(10-2*3) # 先算乘法,在计算减法,计算顺序一样
# *跟字符串做搭配
print('------------------------------------------')
print('-'*50) # 打印50个 -
(除法运算)除法运算返回浮点数
print(10 / 2) # 除法运算,5.0除法运算返回的都是浮点型
print(9 / 3) #/: 除以,返回时浮点数3.0
print(10 / 3) # 计算机(二进制010101) 二进制的有穷性(了解)输出3.3333333333333335
(求余数运算)计算出模,返回除法余数
print(10 % 3) # %:模
print(10 % 3) #%:模,取整10//3=3余1 3*3=9 10-9=1
print(-10 % 3) # -10//3=-4 -4*3=-12 -10-(-12)=2
(商和余数)
x = 10
y = 3
print(divmod(x,y)) #divmod(x,y)-->(x//y,x%y)-->(商,余数)
(数值精确问题的解决)在计算机中会出现例如:5.4-3=2.40000000000004等情况,这是计算机转换为二进制,结果以十进制呈现,计算时出现的精确误差,为了解决误差选择用内置模块decimal 代码如下:
print(5.4-3) #2.4000000000000004并不是python的bug,而是因为在计算机中做计算需要转为二进制
# 当计算完之后,又将结果转为十进制呈现,所以产生的精准误差。
# 解决精度问题,内置模块decimal
# 导入decimal模块
# import decimal # 导入decimal模块
from decimal import Decimal #从decimal模块中导入Decimal类
print(Decimal('5.4')-Decimal('3')) #2.4
print(Decimal(5.4)-Decimal(3)) #2.400000000000000355271367880精确值更准
num = Decimal('5.4')-Decimal('3')
print(float(num)==2.4)
print(type(num))
"""输出true"""
2.2比较运算符
运算符 | 秒速 |
---|---|
== | 比较值是否相等 |
!= | 比较值是否不相等 |
> | 大于 |
< | 小于 |
>= | 大于并且等于 |
<= | 小于并且等于 |
比较运算符返回的结果是一个Boolean类型的值,因此它的返回值只能是true或者false
一般情况下,true表示成立,false表示不成立,即:true表示真,false表示假;在某些场合下,true也可以表示1,false表示0
(比较值是否相等 ==)
True可以看作数值1,False看作0,用==比较两个值是否相等,返回bool,在比较运算符中比较的是数值,字符串相加是做拼接
# 比较运算符 返回的都是bool类型(True False)
print(True==1) # ==比较两个值是否相等,返回bool值
print(False==0) # True
print(True + 1) # True可以看做数值1,参与运算。输出:2
print(False + 1) # False看做数值0,也参与运算。输出:1
print(2.0==2) # True,比较运算符-->比较的是数值
print('2'==2) # False,字符串不是数值,因此是False,字符串相加其实做拼接
(不等号 !=) 在Python2中用(<>)表示不等于,而python3中<>号已经被废除
a = 1
b = 2
print(a != b) # True 不等号!=
# print(a <> b) # 在Python2当中表示的也是不等于,Python3当中<>号被废除了
# print(a != b) #注意:!=不能分开写
(数值比较)简单的数字进行比较
print(2.5>2) # True,数值比较
字符串与字符串进行比较,用ASCII进行比较,例如:
# 字符串与字符串作比较,ASCII码比较
print("abc"<"xyz") # True 可以比较,ASCII值比较 97 98 99 < 120 121 122
# 逐个比较,比较出结果就结束
print("ab"<"ac") #True,a>a做不出比较,接着比较b<c,b确实小于c,因此为True
print("ab">"ac") #False
print('a' >= 'a') # True,虽然'a'不大于'a',但是他们相等,因此返回True
注意:只要当第一个元素比较成功以后就结束。即只比较第一个,若第一个做不出比较,就接着比较第二个,以此类推,只要比较结束就出结果,不用考虑后面的元素。ASCII码中A-->65、a-->97
注意:int类型不能直接与str类型进行比较
print(3<'a') # int 与 str 类型不能直接作比较
连续比较:比较的两者都要为True才为True,否则False,比较时仔细看清优先级,例如有小括号等情况(逻辑运算符)
# 连续比较:a>b>c --> a>b and b>c 两者都为True才为True
print(3>2>1) # True
print(3>2>2) # 3>2(True) and 2>2(False)
print((3>2)>1) # 加了小括号优先级。True > 1 -->False
print(True==1) #1不大于1