day3-变量和运算符

变量

1.什么是变量

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

1)声明变量的语法 - 声明完变量后,使用变量就是在使用变量里面存储的值0
变量名 = 值w

2)说明
变量名 - 程序员自己命名的;
要求:是标识符:不能是关键字
规范:见名知义;满足PEP8命名规范(变量名所有字母都小写,多个单词用_隔开);
不能用系统提供的类名、函数名、库名等来给变量命名

= - 赋值符号,将右边的数据赋给左边的变量(动词)
值 - 任何有结果的表达式都可以;例如:数据、已经声明过的变量、运算表达式.....

age = 50
print('我的年龄是:', age)
if age < 18:
    print('未成年')
else:
    print('成年')

变量的值

b1 = 89
b2 = 0b1101
b3 = "hello"
b4 = True
b5 = age
b6 = 10 + 2

2.变量的使用

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

age = 18
print(age)
age = "hello"
print(age)

3.同时声明多个变量

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

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

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

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

4.python声明变量的原理

先开辟空间存储数据(存储的数据需要多大的内存就开辟多少内存空间),
然后再将变量和这个数据对应的内存空间关联在一起

变量三要素:
a = 10
值 - 给变量赋值的数据(10) - 使用变量
类型 - 给变量赋值的数据的类型(int) - type(变量)
地址 - 给变量赋值的数据在内存中的地址,
也是变量中真正存储的东西 - id(变量)

a = 10
print(a, type(a), id(a))
a = 100
print(a, type(a), id(a))
a = 'abc'
print(a, type(a), id(a))

在python中用一个变量给另一个变量赋值的时候,是将原来的变量中数据地址赋给另一个变量;赋值完成后,数据还是只有一个

b = a
print(id(a), id(b))

运算符

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

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

====================数学运算符====================

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

print(1+1)
print(20-10)
print(20*10)
print(5/2)

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

print(5 % 2)
print(10 % 4)

应用1:判断整数的奇偶性 - 判断这个数对2取余的结果是否为0

print(10 % 2)
print(11 % 2)

应用2:是否整除 - 判断余数是否为0

应用3:取低位数,例如:获取一个整数个位数 - 数字%10

num = 123
print(num % 10)  # 3
print(num % 100)  # 23

3)// - 整除(商只取整数部分)

负数整除除不尽的时候向下取整 , -5//2 == -3

print(5//2)  # 2
print(3.9//3)  # 1.0

应用:取高位

num = 123
print(num//100)  # 1

4)** - 幂运算;x**y - 求x的y次方

print(2**3)  # 8

开平方

print(16**(1/2))  # 4
print(8**(1/3))  # 2

====================比较运算符=====================

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

注意:所有比较运算符的运算结果都是布尔值

1)>、<、>=、<=和数学中的大于、小于、大于等于、小于等于是一样的

print(1 > 2)  # False
print(1 < 2)  # True
print(3 >= 3)  # 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 True -> False
False and False -> False

使用场景:需要多个条件同时满足的时候,就用and;
相当于生活中的并且
gpa = 4.5
score = 98
获取奖学金的条件:绩点不低于4且操行分高于95

print('是否能够获取奖学金:', gpa >= 4 and score > 95)

练习:判断一个数是否能够同时被3和7整除3

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 True  ->  True
False or False  ->  False

使用场景:需要多个条件中有一个条件满足就行,就是用or;
相当于生活中的or

gpa = 4.5
score = 90
获得奖学金的条件:绩点不低于4或者操行分高于95

print('是否获得奖学金:', gpa >= 4 or score > 95)

3) not

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

not True  ->  False
not False  ->  True

使用场景:对某一个条件进行否定

一个数不能同时被3和7整除的条件

num = 21
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
True and func1()
# func1()
True or func1()

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

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

1)变量 = 数据 ->将右边的值赋给左边的变量

a = 10
b = 10*2
c = a
d = a + b
a = 100

2)组合的赋值运算符

变量 += 值 ->变量 = 变量 + 值

变量 -= 值 ->变量 = 变量 - 值

aa = 100
aa += 10   # aa = aa + 10; aa = 100 + 10; aa = 110
print(aa)

aa *= 4/2  # aa *= 2.0; aa = aa * 2.0; aa = 110 * 2.0; aa = 220.0
print(aa)

aa %= 2
print(aa)

aa = 2
aa **= 64
print(aa)

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的补码:10000111(原)-> 11111000(反)-> 11111001(补)
                               3的补码:00000011
-7 & 3 = 00000001(补) == 1
print(7 & 1, 97 & 1, 99 & 1)
print(8 & 1, 6 & 1, 648 & 1)

2)|

运算规则:每一位是的数如果都是0结果就是0,只要有1就是1
1110 | 0111 -> 1111

print(3 | 2)
print(-7 | 3)
-7:11111001(补)
3:00000011(补)
-7 | 3 = 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

print(2 << 1)  # 2*2**1==4
print(3 << 2)  # 3*2**2==12
print(-4 << 1)  # -4*2**1==-8

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

推荐阅读更多精彩内容

  • 1.什么是变量和变量的声明 变量是用来申请空间保存数据的 1)声明变量的语法 :声明完变量后,使用变量就是在使用变...
    臨時人間阅读 150评论 0 1
  • Day3学习大纲: 1.day2学习知识回顾2.变量3.运算符4.位运算5.字符串 一.变量 变量就是在程序中用来...
    312d026ea2dd阅读 119评论 0 0
  • Day3学习大纲: 1.day2学习知识回顾2.变量3.运算符4.位运算5.字符串 一.变量 变量就是在程序中用来...
    312d026ea2dd阅读 233评论 0 0
  • 1、变量 变量就是在程序中保存数据的容器 1.1 声明变量(定义变量)-假的声明 语法:变量名 = 值说明:变量名...
    未醒的梦_19b0阅读 154评论 0 0
  • 天寒雪飘扬, 鸟迹人踪灭。 新梅独傲冬, 青竹叶白缀!
    何以箫声默阅读 313评论 3 2