变量和运算符

变量和运算符

一、变量

语法:
变量名 = 数据

说明:
变量名 - 程序员自己命名
要求:1)标识符 2)不能是关键字
规范:1)见名知义 2)满足PEP8的命名规范(所有的字母都小写,多个单词之间用下划线隔开)
3)不使用系统提供的类型名、函数名和模块名

= - 赋值符号,固定写法
数据 - 任何有结果的表达式,包括:独立的数据、运算表达式(除了赋值运算)、函数调用表达式

1.变量
age = 18
teacher_name = “张三”

定义一个变量,保存学生分数
stu_score = 90

2变量的使用
变量中保存的数据能做什么,变量就能做什么
使用变量的时候其实是在使用变量中保存的数据
print(“age :”, age) # 18
print(age + 34) # 52
print(“abc”[0]) # a
str1 = “hello”
print(str1[0]) # h

3.修改变量中的数据(重新给变量赋值)
变量 = 新值
print(age)

重新给变量赋值
age = 20
print(age) # 20

python中同一个变量可以保存不同类型的值
age = “你好!”
print(age) # 你好!

4.同时定义多个变量\同时给多个变量赋值
1)同时给不同的变量赋不同的值:变量1, 变量2, 变量3, … = 数据1, 数据2, 数据3, …
a, b, c = 10, 20, 30
print(a, c, b)

python交换两个变量的值
x = 100
y = 200
x, y = y, x
print(“x, y :”, x, y)

练习:假设已经存在三个变量x1, x2, x3 要求:用一句代码完成功能:x1 == x3, x2 == x1, x3 == x2
x1, x2, x3 = 10, 20, 30
x1, x2, x3 = x3, x1, x2
print(“x1, x2, x3 :”, x1, x2, x3)

2)同时给不同的变量赋相同的值:变量1 = 变量2 = 变量3 = 数据
a1 = a2 = a3 = 100
print(“a1, a2, a3 :”, a1, a2, a3)

注意:不能使用未赋值的变量
print(name) # 错误信息:NameError: name ‘name’ is not defined

二、变量赋值的原理

栈区间(系统自动操作)
堆区间(程序员写代码申请和释放)

1.定义变量和给变量赋值的原理:
变量 = 数据
1)先在堆中申请内存(申请多大看被赋值的数据需要多大内存)
2)将数据保存在内存区域中
3)让变量和保存数据的内存相关联(让变量保存数据对应的地址)

2.id函数
id(变量) - 获取变量中关联的数据在内存中的地址
num = 10
print(id(num))

num = 20
print(id(num))

三、数学运算符

python支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算

1.数学运算符:+(加) -(减) *(乘) /(除) %(取余、取模) //(整除) **(幂运算)

1)+(加) -(减) (乘) /(除) 和数学中的加减乘除功能一样
print(5+2)
print(5-2)
print(5
2)
print(5/2)
2) % - 求余数
数字1 % 数字2 ->求数字1除以数字2的余数
print(5 % 2)

应用1:取正数的个位数或者低几位
练习:获取变量 num 的个位数
num = 8679
print(num % 10) # 9

print(num % 100) # 79

应用2:判断一个数是否能够被另外一个数整除
练习:判断num是都为偶数
num = 2898
print(num % 2)
3) // - 求商取商的整数部分(向下取整/向小取整)
print(5//2)
print(-5//2)
print(3.9//3)

应用:取数字的最高位
num = 367
print(num//100) # 3
print(num//10) # 36
4) ** - 幂次方
M ** N - 计算M的N次方
print(3 ** 2) # 9
print(2 ** 3) # 8
print(9 ** 0.5) # 3.0
n = 1/3
print(8 ** n) # 2.0
print(12+3*4//5-6**2) # -22

四、比较运算符

比较运算符(关系运算符): > < == >= <= !=
注意: 1.所有比较运算的结果都是布尔值
2.数字数据不能和字符串数据进行比较

print(10 > 5) # True
print(10 < 5) # False
print(10 == 5) # False
print(10 >= 5) # True
print(10 <= 5) # False
print(10 != 5) # True

可以直接将运算结果赋给变量
a = 3 > 4
print(a) # False

python中支持比较运算符的连写表示范围
x = 10
print(0 <= x <= 100) # True

五、逻辑运算符

python中的逻辑运算符:and(逻辑与) or(逻辑或) not(逻辑非)
1.and

  1. 运算规则:
    a. 操作都是布尔值:两个都是True,结果才是True,只要有一个是False结果就是False

True and True # True
True and False # False
False and False # False
False and True # False

2)应用场景:希望两个或者多个条件同时满足才做什么事情,就是用逻辑与运算。相当于生活中的并且
练习1: 写出学生是否能拿奖学金的条件,拿奖学金的要求:绩点超过4,操平分高于85,这两个条件同时满足
grade = 4.5
score = 85
print(grade > 4 and score > 85)

2.or

  1. 运算规则:
    a. 操作都是布尔值:两个都是False才是False,只要有一个是True结果就是True

True or True # True
True or False # True
False or False # False
False or True # True

2)应用场景:希望两个或者多个条件只要有一个满足就可以使用逻辑或运算。相当于生活中的或者
练习2: 写出学生是否能拿奖学金的条件,拿奖学金的要求:绩点超过4或者操平分高于90
grade = 4.5
score = 80
result = grade > 4 or score > 90
print(result)

练习3: 写出判断指定的年是否是闰年的条件:1)能被4整除不能被100整除 2)直接能被400整除
year = 2012
result_year = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
print(“是否为闰年:”, result_year)

3.not

  1. 运算规则:True 变 False, False 变 True

not True ->False
not False ->True

2)应用场景:不满足某个条件就做什么,就用not
练习:写出num是否不能同时被3和7整除
num = 21
print(“是否满足条件:”, not (num % 3 == 0 and num % 7 == 0))

4.操作对象不是布尔值的时候
逻辑运算符语法上可以操作任何数据
补充:数据的布尔值怎么确定 ->所有为空的值都是False,其他数据的布尔都是True

  1. 数据1 and 数据2 ->如果数据1的布尔值是True,结果是数据2。如果数据1的布尔值是False, 结果是数据1

print(1 and “abc”) # abc
print(“abc” and “hello”) # hello
print(0 and “abc”) # 0
print("" and False) # 空
print(False and 100) # False

  1. 数据1 or 数据2 ->如果数据1的布尔值是True,结果是数据1。如果数据1的布尔值是False,结果是数据2

print(1 or “abc”) # 1
print(“abc” or “hello”) # abc
print(0 or “abc”) # abc
print("" or False) # False
print(False or 100) # 100

  1. not
    print(not 1) # False
    print(not 0) # True

5.短路操作
and 的短路操作
表达式1 and 表达式2 -> 如果表达式1的结果是False,表达式2不会执行
or 的短路操作
表达式1 or 表达式2 -> 如果表达式1的结果是True,表达式2不会执行

def fun1():
print(“函数被执行”)
False or fun1()

五、赋值运算符

1.赋值运算符:= += -= *= /= %= //= **=

1)所有的赋值运算符都是用来给变量赋值的
2)所有的赋值运算符的左边都必须是变量,复合赋值运算符左边的变量必须是已经赋值过的变量
3)所有的赋值运算符的右边都可以是任意有结果的表达式

  1. =
    a = 10
  2. += -= *= /= %= //= **=
    变量 += 数据 -> 变量 = 变量 + 数据
    a += 50
    print(a) # 60
    a /= 2
    print(a) # 30.0
    a **= 2
    print(a) # 900.0

2.运算符优先级
数学运算符>比较运算符>逻辑运算符>赋值运算符(最低)
** > *, /, %, // > +, -
右括号先算括号里面的
a = 10 + 30 > 35
b = 30 * 2 > 50 * 2
print(a, b)

六、位运算

1.位运算的特点:效率高,内存消耗少
2.位运算运算符: &(按位与)、 |(按位或)、 ^(异或)、 ~(按位取反)、 <<(左移)、 >>(右移)
所有的位运算都是直接操作数据在内存中存储的补码

  1. &(按位与)
    数字1 & 数字2 - 两个都是1结果就是1,否则结果是0
    0110 1101(补) & 1010 1100(补) -> 0010 1100(补)
    特点:某一位上的数和1与,可以对这一位上的数进行保存,和0与会对这一位进行置0操作

print(5 & 9)
print(-5 & -9)

5: 0000 0101
9: 0000 1001
5 & 9 = 0000 0001(补) = 1

应用:判断数字的奇偶性

让被判断的数字和 1 进行按位与运算,结果如果是0说明是偶数,1是奇数

  1. |(按位或)
    数字1 | 数字2 - 只要有一个是1结果就是1,两个都是0结果才是0

  2. ^(异或)
    数字1 ^ 数字2 - 不同为1,相同为0
    print(18 ^ 9) # 27
    print(27 ^ 9) # 18

  3. ~(按位取反) - 0变1 1变0
    ~数字

  4. << >>(左移)(右移)
    数字1 >> 数字2 - 数字1 // 2 ** 数字2
    数字1 << 数字2 - 数字1 * 2 ** 数字2
    应用:高效率、快速的乘2或者2的次方值
    print(6 << 1) # 6 * 2 ** 1 = 12
    print(5 << 2) # 5 * 2 ** 2 = 20
    print(7 >> 1) # 7 // 2 ** 1 = 3
    print(-7 >> 1) # -7 // 2**1 = -4

例:
a = 18
a *= 2
print(18 * 2)
print(18 << 1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值