一、变量
💡 系统会先申请内存空间,根据计算数据的字节大小分配相应的内存,重新赋值后得到的内存地址不一样。
1、变量的作用
- 变量是用来保存数据的。
程序需要数据的两种做法:
- a、直接提供数据。
print(32)
print(28)
print('蒸汽机器人:我自人类诞生,却被人类抛弃,孤独的徘徊于世间,却与世间格格不入,于是我只能试图抓住每个遇到的生命,去倾诉那颗从不被理解的心。')
print('蒸汽机器人:我自人类诞生,却被人类抛弃,孤独的徘徊于世间,却与世间格格不入,于是我只能试图抓住每个遇到的生命,去倾诉那颗从不被理解的心。')
print('蒸汽机器人:我自人类诞生,却被人类抛弃,孤独的徘徊于世间,却与世间格格不入,于是我只能试图抓住每个遇到的生命,去倾诉那颗从不被理解的心。')
print('蒸汽机器人:我自人类诞生,却被人类抛弃,孤独的徘徊于世间,却与世间格格不入,于是我只能试图抓住每个遇到的生命,去倾诉那颗从不被理解的心。')
print('蒸汽机器人:我自人类诞生,却被人类抛弃,孤独的徘徊于世间,却与世间格格不入,于是我只能试图抓住每个遇到的生命,去倾诉那颗从不被理解的心。')
- b、先将数据保存到变量中,再通过变量来提供数据。
age = 32
print(age)
score = 28
print(score)
word = '蒸汽机器人:我自人类诞生,却被人类抛弃,孤独的徘徊于世间,却与世间格格不入,于是我只能试图抓住每个遇到的生命,去倾诉那颗从不被理解的心。'
print(word)
print(word)
print(word)
print(word)
print(word)
- 结论: 程序中使用数据的时候,先将数据保存到变量中,然后再通过使用变量来使用这个数据。
2、定义变量(创建变量)
💡语法:
变量名 = 数据
💡说明:
变量名 - 由程序员自己命名
两个要求:是标识符;不是关键字;
三个规范:见名知义(看到变量名就大概知道这个变量中保存的是什么数据);
所有字母都小写,多个单词之间用下划线隔开;
不能使用系统的函数名(print、input、type)、类名(int、float、str)和模块名;
= - 固定写法
数据 - 可以是任何有结果的表达式(具体的数据、运算表达式、函数调用表达式)
name = '小明'
dog_name = '旺财'
dogName = '大黄' # 单词首字母大写来区分不同的单词(驼峰式命名)
# print = 100
a = 100
b = 12.3
c = 'and'
x = 100 + 200
# age = input('请输入年龄:')
3、使用变量
- 使用变量就是使用变量中的数据,所以数据能做的事情,保存数据的变量都可以做。
a1 = 100
print(100)
print(a1)
print(100 + 200)
print(a1 + 200)
print(type(100))
print(type(a1))
print(type(a1 + 200))
4、重新给变量赋值
- 重新给变量赋值以后,变量中只会保存最新的值。
a1 = 200
print(a1)
a1 = 'abc'
print(a1)
5、同时定义多个变量
- 同时定义多个变量赋相同的值: 变量名1 = 变量名2 = 变量名3 = … = 数据
x1 = y1 = z1 = 12
print(x1, y1, z1)
- 同时定义多个变量赋不同的值: 变量名1, 变量名2, 变量名3, … = 数据1, 数据2, 数据3, …
x2, y2, z2 = 10, 20, 30
print(x2, y2, z2)
6、练习:写代码交换两个变量值
# 方法1:
m=100
n=200
r=m # r = 100
m=n # m = 200
n=r # n = 100
print(m, n)
# 方法2:
m=100
n=200
m, n=n, m # m, n = 200, 100
print(m, n)
7、给变量名重新赋常量
- 内存地址会不一样
v=100
print(id(v))
v=10000
print(id(v))
二、运算符
1、数学运算符
💡 数学运算符:+、-、*、/、%、//、**
1)python中 +、-、、/ 和数学中的 +、-、、÷的功能一样
- 注意:除法运算的运算结果一定是小数。
print(5 + 2)
print(5 - 2)
print(5 * 2)
print(5 / 2)
print(6 / 2)
2)% - 取余(取模)
- x % y - 求 x 除以 y 的余数。
print(10 % 3)
print(25 % 5)
- 应用场景1:判断两个整数之间是否存在整除关系(如果一个数能够被另外一个数整除,那么他们的余数为0)。
print(10 % 5)
print(100 % 10)
- 应用场景2:取正整数的低位数(对10或者10的N次方取余)。
num = 2348
print(num % 10)
print(num % 100)
print(num % 1000)
3)// - 整除(求商,商向小取整)
print(5 // 2) # 2 2.5 3 -> 2
print(-5 // 2) # -3 -2.5 -2 -> -3
- 应用场景1:计算一个数中有多少个完整的另外一个数。
print(192 // 10)
print(192 // 5)
t = 82929
print(t // 60)
print(t // 3600)
- 应用场景2:去掉整数的低位数,保留高位数。
num = 2354
print(num // 10)
print(num // 100)
print(num // 1000)
练习:写代码获取num的十位数
num = 28393
# 方法1:
print(num // 10 % 10)
# 方法2:
print(num % 100 // 10)
4)** - 幂运算
- x ** y - 求 x 的 y 次方。
print(2 ** 3)
print(5 ** 4)
print(16 ** 0.5) # 4.0
print(8 ** (1/3)) # 2.0
print(2 ** -2)
print(7 ** 4)
print(81 ** 0.25)
print((1/4) ** -2)
2、比较运算符
💡 比较运算符:>, <, >=, <=, ==, !=
1)所有的比较运算符的运算结果都是布尔值
print(100 > 10)
print(100 < 10)
print(100 == 100)
num = 49
print('num是否是偶数:', num % 2 == 0)
age = 24
print("是否成年:", age >= 18)
price = 59
print('钱是否能买玩具:', price >= 80)
2)python中的比较运算符支持连写表示范围
age = 32
print(18 <= age <= 28)
# print(age >= 18 and age <= 28)
3、逻辑运算符
💡 逻辑运算符:and、or、not (程序中写条件语句的时候使用)
1)and - 逻辑与运算
💡 a、应用场景:用于连接需要同时成立的两个条件,相当于生活中的‘并且’。
💡 b、运算规则:条件1 and 条件2 - 如果两个条件都成立,结果是True,否则结果是False。
True and True - True
True and False - False
False and True - False
False and False - False
案例:写出判断num是否能同时被3和7整除的条件
num = 34
# 能同时被3和7整除 -> num能被3整除、num能被7整除
# num能被3整除:num % 3 == 0
# num能被7整除:num % 7 == 0
print('num是否能同时被3和7整除:', num % 3 == 0 and num % 7 == 0)
print('num是否能同时被3和7整除:', num % 21 == 0)
练习:判断num是否能被3整除的奇数
num = 31
print('num是否能被3整除的奇数:', num % 3 == 0 and num % 2 != 0)
2)or - 逻辑或运算
💡 a、应用场景:如果需要两个或者多个条件中有一个条件成立就行,多个条件就用 or 连接,相当于生活中的’或者‘。
💡 b、运算规则:条件1 or 条件2 - 主要有一个条件成立,结果就是True;两个条件都不成立结果是False。
True or True - True
True or False - True
False or True - True
False or False - False
案例:判断num是否能被3或者7整除
num = 34
print('num是否能被3或者7整除:', num % 3 == 0 or num % 7 == 0)
练习:判断year对应的年份是否是闰年
# 闰年分为世纪闰年(能被400整除的年)和普通闰年(能被4整除但是不能被100整除的年)两种
year = 2008
# 世纪闰年: year % 400 == 0
# 普通闰年: year % 4 == 0 and year % 100 != 0
print('year是否是闰年:', year % 400 == 0 or (year % 4 == 0 and year % 100 != 0))
3)not - 逻辑非运算
💡 a、应用场景:对某个条件进行否定,相当于生活中的’不‘。
💡 b、运算规则:not条件 - 对指定的条件进行否定。
not True - False
not False - True
age = 28
# 年龄不大于18的条件
print('age值是否不大于18', not age > 18)
print('age值是否不大于18', age <= 18)
# num是否不能同时被3和7整除
num = 28
print('num是否不能同时被3和7整除:', not num % 21 == 0)
print('num是否不能同时被3和7整除:', num % 21 != 0)
4、赋值运算符
💡 赋值运算符:=、+=、-=、*=、/=、//=、%=、**=
- 注意: 所有的赋值运算符的功能都完成给变量赋值的操作。
1)=
- 变量名 = 数据 - 直接将数据保存到变量中。
a = 10
2)+=
- 变量名 += 数据 - 先将变量中的数据取出来和后面的数据进行加法运算,然后再将运算结果重新赋值给前面的变量。
# b += 10 报错!
a += 20
print(a) # 30
a -= 7
print(a) # 23
a *= 2 # 23 * 2 = 46
a %= 3 # 46 % 3 = 1
print(a) # 1
b = 40
b /= 2
print(b)
b **= 2
print(b)
- 特别注意: 所有赋值运算符对应的运算表达式都是没有结果的,无法提供数据。
print(10)
print(10 * 20)
print(10 > 20)
# print(a = 30)
- 赋值运算表达式不能提供数据,但是可以通过完成赋值操作后的变量来提供数据。
# print(a = 30)
# print(a += 30)
a += 30
print(a)
5、运算符的优先级
- 运算符优先级:混合运算的时候,会先算优先级高的运算符,再算优先级低的运算符。
💡 1. 数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
💡 2. ** > *、/、%、// > +、-
💡 3. and > or
💡 4. 有括号先算括号里面的 - ()