day3 - 变量和运算符

1.什么是变量和变量的声明

变量是用来申请空间保存数据的

  • 1)声明变量的语法 :声明完变量后,使用变量就是在使用变量里面存储的值
变量名 = 值
  • 2)说明
    变量名:变量名是由程序员自己命名的;
    变量名的命名要求:和标识符的命名要求相同,且不能是系统关键字
    变量名的命名规范:
    - 1.见名知意;满足PEP8命名规范(所有的字母都小写,多个单词用下划线隔开);
    - 2.不能使用系统提供的函数名、类名、库名等来给变量命名;
    - 3.=: 赋值符号,将右边的数据赋给左边的变量(动词);
    - 4.值:任何有结果的表达式;例如:数据、已经申明过的变量、运算表达式等。

  • 3)变量的值

b1 = 89
b2 = 0x1101
b3 = '你好!'
b4 = True
b5 = b1
b6 = 10 + 2 + b1

2.变量的使用

使用变量就是使用变量中的值;变量中的值可以修改

age = 50
age = 18
# 修改之后原有的age的值会被覆盖
age = '你好!'
# 同一个变量可以被赋予不同类型的值,新赋予的值会覆盖旧的值

3.同时声明多个变量

  • 1)同时声明多个变量赋相同的值
    变量名1 = 变量名2 = 变量名3 = …… = 值

  • 2)同时声明多个变量赋不同的值
    变量名1, 变量名2, 变量名3, …… = 值1, 值2, 值3, ……

c1 = c2 = c3 = 10
print(c1, c2, c3)

x, y = 10, 20
print(x, y)

4.python声明变量的原理

java/c语言声明变量:赋值前先向内存申请空间,不同的数据类型对应的空间不同,一旦申请之后空间就确定了。

类型名 变量名 = 值;
int a = 10;# int一般是两个字节的空间
a = 100; #重新赋值时,也只能是int类型的数据

而python语言在声明变量时逻辑是相反的,即先开辟空间存储数据,存储的数据需要多大的内存就开辟多少内存空间,然后再将变量和数据对应的内存空间关联在一起(实际上关联的是变量和数据存储的内存空间的地址);
在对变量重新赋值时,则是开辟一个新的空间储存数据,再与之前的变量关联同时销毁之前的数据空间。

python变量的三要素(类型、值、地址)

a = 10

  • 值 - 给变量赋值的数据(10)- 使用变量
  • 类型 - 给变量赋值的数据的类型(int)- type(变量)
  • 地址 - 给变量赋值的数据在内存中的地址,也是变量中真正存储(关联)的东西(eg:0xff)- id(变量)
a = 10
print(a, type(a), id(a))
# 当对a重新赋值时,地址会发生变化
a = 100
print(a, type(a), id(a))
# 在java/c语言中,把一个值赋予两个变量时,复制的是容器中(地址中)的数据,即两个变量值相同但是地址不同
# 而在python中,用一个变量给另一个变量赋值时,是将原来的变量中数据的地址赋给另一个变量;赋值完成后,数据还是只有一个,即两个变量的值相同且地址也相同
b = a
print(a, type(a), id(a))
print(b, type(b), id(b))

                                            立ち入り禁止

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

1.数学运算符:+、-、、/、%、//、*

  • 1)+、-、*、/ 和小学数学中的加(+)、减(-)、乘(x)、除(÷)的功能一模一样

  • 2)% - 求余数(取余/取模)

print(5 % 2)  # 5÷2 余数是1
print(10 % 4)  # 10÷4 余数是2

应用1:判断整数的奇偶性 - 判断这个数对2取余的结果是否是0
应用2:是否整除 - 判断余数是否为0
应用3:取低位数,例如,获取一个整数的个位数 - 数字%10

num = 123
print(num % 10)  # 3
print(num % 100)  # 23
  • 3)// - 整除(商只取整数部分)
注意:负数整除除不尽的时候向下取整!!!

eg: -5 // 2 == -3

print(5 // 2)  # 2
a = 3.9 // 3  # 1.0
print(type(a))

应用:取高位

  • 4)** - 幂运算;x ** y -- 求x的y次方
print(2 ** 3)
print(16 ** (1/2))  # 开平方

2.比较运算符:>、 <、 ==、 !=、 >=、 <=

注意:所有的比较运算的运算结果都是布尔值,即True和False
  • 1)>、 <、 >=、 <= 和数学中的 >、 <、 ≥、 ≤是一样的
print(10 > 20)  # False
print(30 >= 20)   # True
  • 2) == - 判断两个值是否相等, != 判断两个值是否不相等
print(10 == 10)  # True
print(10 != 10)  # False
  • 3)python中可以像数学一样用比较运算符连写的方式来表示范围(c/java/js等不可以)
age = 20
print(18 < age < 28)

3.逻辑运算符:and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)

逻辑运算符的运算对象和结果一般都是布尔值

  • 1)and

运算规则:两个都是True,结果才是True;只要有一个是False,结果就是False
True and True -> True
True and False -> False
False and False -> False
使用场景:需要多个条件同时满足的时候,就用and;相当于生活中的并且

gpa = 4.5
score = 90
# 获取奖学金的条件:绩点不低于4并且操评分高于95
print('是否能够获取奖学金:', gpa >= 4 and score > 95)
# 练习:判断一个数是否能够同时被3和7整除
num = 35
print('这个数是否能同时被3和7整除:', num % 3 == 0 and num % 7 == 0)
  • 2)逻辑或运算or

运算规则:两个都是False,结果才是False,只要有一个是True,结果就是True
True or True -> True
True or False -> True
False or False -> False
使用场景:需要多个条件中有一个条件满足就行,就使用or;它相当于生活中的或者or

  • 3)not非运算(单目运算符)

运算规则:True变False, False变True
not True -> False
not False -> True
使用场景:对某一个条件进行否定

num = 14
# 一个数不能同时被3和7整除的条件
print('不能同时被3和7整除:', not (num % 3 == 0 and num % 7 == 0))
  • 4)短路操作

and的短路操作:条件1 and 条件2 -> and前面的条件如果结果是False,那么后面的条件语句不会执行,结果直接是False
or的短路操作:条件1 or 条件2 -> or前面那个条件结果如果是True,那么后面的条件语句不会被执行,结果直接是True

def func1():
    print('函数被执行了')
    return True

False and func1()  # and的短路操作
True or func1()  # or的短路操作

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

所有的赋值运算符的左边必须是变量;组合的赋值运算符的左边除了要求是变量,这个变量还必须是已经声明过的

  • 1)变量 = 值 -> 将右边的值赋给左边的变量
a = 10
b = 10 * 2
c = a
d = a + b
  • 2)组合的赋值运算符
    变量 += 值 -> 变量 = 变量 + 值
bb = 100
bb += 10
print(bb)

bb -= 20
print(bb)

bb *= 4/2  # 除法运算的结果都是浮点类型的数据
print(bb)

bb %= 2  # bb = bb%2 ; bb = 180%2; bb=0

5.运算符优先级(运算顺秀)

运算符优先级:
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
数学运算符的优先级和数学一样:** > *, /, //, % > +, -
如果有括号,先算括号里面的


                                            立ち入り禁止

所有的位运算都是针对数字的补码进行操作的;特点是快速(运算效率高)

位运算:&(与), |(或), ~(取反), ^(异或), <<(左移), >>(右移)

注意:位运算时,符号位也参与运算

  • 1.&

运算规则:补码每一位分别进行运算,当参与运算的补码的相同位都是1,结果就是1;如果有一个0结果就是0
1110(补码) & 0111(补码) = 0110
应用:高效判断数字的奇偶性 - 让数字和1进行按位与运算,判断结果是0(偶数)还是1(奇数)

a = 3 & 2
print(a)
"""
3的补码:00000011
2的补码:00000010
00000011 & 00000010 = 00000010 == 2
"""

b = -7 & 3
print(b)

"""
-7 的补码:100000111(原) -> 11111001(补码)
3 的补码                      00000011
-7 & 3 = 00000001(补码)== 1
"""

print(7 & 1, 111 & 1, 82 & 1)
  • 2.|按位或运算

运算规则:参与运算的数的补码对应每一位上的数都是0,结果就是0,只要有1结果就是1
1110 | 0111 -> 1111

print(3 | 2)
print(-7 | 3)  # 11111001 | 00000011
"""
-7: 11111001
3: 00000011
11111011(补) -> 11111010(反) -> 10000101 == -5
"""
  • 3.~取反(单目)

运算规则:将每一位上的0变成1,1变成0
~ 1101 -> 0010

print(~-7)
"""
11111001(补码) -> 00000110 == 6
"""
  • 4.^异或

运算规则:参与运算的数的补码对应每一位上的数相同结果是0,不同结果就是1
11011 ^ 10010 -> 01001

  • 5.<<

数字<< N -> 指定的数字的补码整体向左移动N位;计算:数字*2 **N
00100110 << 1 -> 01001100

print(2 << 1)  #  2 * 2 ** 1 = 4
print(-3 << 2) #  -3 * 2 ** 2 = -12
# 力扣 这个网站有许多算法题可以参考
  • 6.>>

数字>> N -> 计算:数字//2**N

print(4 >> 1)  # 2
print(9 >> 2)  # 2
print(-8 >> 2)  # -2
print(-9 >> 1)  # -5
print(-9 // 2)  # -5 注:负数整除的时候会往小的方向取整
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容

  • 1.什么是变量 变量是在程序中开辟空间存储数据用的 2.怎么声明变量 1)语法: 变量名 = 值 2): 说明 变...
    tcis阅读 107评论 0 0
  • 变量 1.什么是变量 变量是用申请空间保存数据 1)声明变量的语法 - 声明完变量后,使用变量就是在使用变量里...
    阿富汗入肉诈弹阅读 96评论 0 0
  • 一、Review 1.简单介绍了一些常用的快捷键: 2.对昨天的知识进行了简单的复习,然后增加了进制转换的方式: ...
    风月辞寒阅读 147评论 0 0
  • 1、什么是变量 变量是在程序中开辟空间存储数据用的。 2、说明 变量名 - 程序员自己命名;要求:标识符,不能是关...
    Ed97001阅读 97评论 0 0
  • 2019年3月27日 星期二 晴 我是香秋卓玛,微信号15960233441,这是我的第421篇日记,滴水穿石不是...
    彩虹老师阅读 1,056评论 0 2