day3-python变量和运算符总结

1.变量

1.1声明变量(定义变量)

  • 变量就是在程序中用来保存数据的容器

  • 在python中是个假的声明,
    语法:
    变量名 = 值

  • 说明:
    变量名 -- 要求:标识符,不能是关键字
    规范:
    a.遵守PEP8命名规范(变量名名字的所有字母都小写,如果由多个单词组成,单词之间用_隔开),如:student_name
    b.见名知义(看到名字就知道变量中存的是什么数据)
    “=” -- 赋值符号,将=右边的值放入左边的变量中
    -- 可以是任何有结果的表达式,如:190 , 变量 , 调用函数表达式等

age = 18
name = '小王'
number = 666
print(age,name,number,sep='----->')   #使用变量,就是使用变量中保存的值
#变量必须先声明(赋值)再使用
#同时给多个变量赋同一个值
num1 = num2 = num3 = 66
print(num1,num2,num3)
#同时给多个变量赋不同的值。(注意:变量的个数和值的个数要保持一致)
n1,n2,n3 = 1,2,3
print(n1,n2,n3)

num4 = 100
num4 = 200
print(num4)  #给同一个变量赋值,后附的值会覆盖掉先附的值
num4 = 'abc'
print(num4)  #同一个变量可以存储不同类型的值!!!
num4 = [1,2,3]
print(num4)
num4 = {'a':100,'b':200}
print(num4)

1.2python中声明变量和给变量赋值的本质

C中声明变量:
int num = 10;

Python中声明变量:
num = 10
num = '321ewqfwfdfwgtre'

结论:

  • python中所有的变量,存的都是数据在内存中的地址(即C中的指针)。内存地址的大小一样,修改变量也只是改变num对应的地址。
  • 用一个变量给另一个变量赋值,实质是将新变量地址赋给旧的变量。
    使用变量的时候,是使用的变量中地址对应的值。

1.3变量的三要素:值、地址和类型

值:变量中存的地址对应的值
地址:变量中存储的地址(id)
类型:变量中存的地址对应的类型

name1 = '小明'
name2 = name1

print(name1)               #使用变量拿到变量中地址对应的值
print(id(name1))           #id(变量) -- 获取变量中存储的地址
print(id(name2))           #两者地址相同,获取的是同一个地址。
print(type(name1))         #查看变量中地址对应的类型

2.运算符

  • python中的运算符:数学运算符,比较运算符,逻辑运算符,赋值运算符,位运算符。

2.1数学运算符:+ - * / % // **

+:加法运算
-:减法运算
*:乘法运算
/:除法运算
%:求余运算
//:整除
**:幂运算

2.1.1 % 应用:

1.获取一个整数的最低位的一位或几位的值 num % (10^n)
2。判断一个数是否能被另一个数整除 num1 % num2

print(10 % 3)     # % -- 取余
#获取一个数的个位数
num = 23232432
print(num % 10)    #3
print(num % 100)   #23
#与2取余可判断奇偶性

2.1.2 // -- 求商,获取商的整数部分

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

num = 289
print(num // 100)    #取一个3位数百位上的值

2.1.3 ** -- 幂运算

#x**y --  求x的y次方
print(2**10)     #2的10次方
print(9**0.5)    #9开平方,结果为浮点数
print(8**(1/3))  #8开3次方,结果为浮点数

2.2比较运算符: > < == != >= <=

#所有的比较运算符的结果都是布尔值。
print(100 > 10)     #True
print(10 > 100)     #False

2.3逻辑运算符: and or not

逻辑运算符的运算对象及结果都是布尔值。

2.3.1 and -- 逻辑‘与’运算

  • 值1 and 值2:判断是否为真,
    如果两者都为True,则结果为True;
    果两者有一个为False,则结果为False。
  • 逻辑与运算相当于生活中的‘并且’;当需要多个条件同时满足,就使用and将多个条件连接在一起
grade = 99
score = 80
print('是否获取奖学金:',grade > 90 and score>95)       #False
#例子:要求成绩大于90,且表现分大于95,才能获得奖学金

2.3.2 or -- 逻辑‘或’运算

  • 值1 or 值2:
    如果值1 和 值2 有一个True就为真,两个都为False才为False
  • 逻辑或运算,相当于生活中的‘或者’。当需要多个条件中至少有一个条件满足,就用or连接。
grade = 99
score = 80
print('是否获取奖学金:',grade > 90 or score>95)       #False
#例子:要求成绩大于90,且表现分大于95,才能获得奖学金

2.3.3 not -- 逻辑‘非’运算

  • not 值 : 如果值是True,结果就是False;如果值是False,结果就是True。
age = 21
print('是否能进入网吧:',not age < 18 )         #True
#not用来对某个条件进行否定。
print('是否能进入网吧:',age > 18 )             #True

3.赋值运算和位运算

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

所有赋值符的左边必须是变量;组合的赋值运算符的左边的变量必须已经赋值;
所有赋值运算符最终都会进行赋值操作

3.1.1 = -- 直接将右边结果赋给左边的变量

num = 100

3.1.2 += -= *= /= %= //= **=

变量 += 值 --> 相当于 变量 = 变量 + 值
变量 -= 值 --> 相当于 变量 = 变量 - 值
变量 *= 值 --> 相当于 变量 = 变量 * 值
变量 /= 值 --> 相当于 变量 = 变量 / 值
变量 %= 值 --> 相当于 变量 = 变量 % 值
变量 //= 值 --> 相当于 变量 = 变量 // 值
变量 **= 值 --> 相当于 变量 = 变量 ** 值

num1 = 1
num1 += 10
print(num1)

num1 *= 3
print(num1)

num1 %= 2
print(num1)

num1 -= -100
num1 //= 2
print(num1)

3.2运算符的优先级

  • 数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
    优先级高的先算。如果有括号,先算括号里面的。
num = 10 + 20 > 25 and True <2
#num = 30 > 25 and True <2
#num = True and True
#num = True
print(num)

num = 10 + (20 > 25 and True <2)
#num = 10 + (False and True < 2)
#num = 10 + False
#num = 10

num = 10 + 2*3**2         #  28 ** > *

3.3位运算

  • 符号: &(按位与) |(按位或) ^(按位异或) ~(按位取反) <<(左移) >>(右移)
  • 位运算是针对二进制中每一位进行的相关操作

3.3.1 &

数字1 & 数字2 ---> 对二进制数的每一位进行‘与’运算,运算时如果都为1结果就是1,否则为0。
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
与的特点: 一位上的数如果和1与,就会保留这一位上的数。如果和0与,就会将这一位,置0。
11010 & 00111 = 00010
3(原) = 0011 = 3(补)
2(原)= 0010 = 2(补)
-2(补)= 1110 0010
0010

与运算的应用:判断一个数是否是偶数(最优算法)
二进制数末尾为1则为奇数 1101 & 1 ---> 1 奇数
二进制数末尾为0则为偶数 1100 & 1 ---> 0 偶数
将数字和1与,如果结果为0,则为偶数。
将数字和1与,如果结果为1,则为奇数。

print(3 & 2)
print(3 & -2)

print(88 & 1)    # 0
print(99 & 1)    # 1

3.3.2 |

数字1 | 数字2 ---> 对二进制数的每一位进行‘或’运算,运算时如果都为0结果就是0;如果有一个为1,则为1。
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
1101 | 1010 = 1111

3 | 2
011 | 010 ---> 011
3 | 20
000011 | 010100 ---> 010111 补码
-3 | 20
111101 补码
010100 ---> 111101补码 111100反码-->100011原码-->-3

print(3 | 1)
print(3 | 0)

3.3.3 按位取反

~ 数字 :将每一位取反(0-->1,1-->0),对补码取反
~2 010 101补码 100反码 111原码

print(~2)

3.3.4 按位异或

数字1 ^ 数字2 -- 每一位相同为0,不同为1。
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

11 ^ 2
0 1011 ^ 0 0010 = 0 1001(补码)
可用于判断两个值是否相等,相同为0,不同不为0。
print(11 ^ 2) # 9

3.3.4 左移

数字1 << n(位数) - 将数字1的二进制数的每一位向左移n位,移出多少位后面加多少个0。即在数字后面加n个0。
10 << 1
0000 1010(补码) ---> 0001 0100(补码)
0001 0100

结论:数字1 << n = 数字1 * 2^n

print(10 << 1)         # 20
print(10 << 2)        # 40
print(10 << 3)        # 80
print(-10 << 1)       # -20
print(-10 << 2)       # -40
print(-10 << 3)       # -80

3.3.5 右移

  • 数字1 >> n(位数) - 将数字1的二进制数的每一位向右移n位,移出多少位将低位删除指定的位数。
10 >> 1
0000 1010(补码) ---> 0 101(补码) 
5    

结论:数字1 >> n = 数字1 // 2^n

print(10 >> 1)      #5
print(10 >> 2)      #2
print(10 >> 3)      #1
print(-10 >> 1)
print(-10 >> 2)     # ??
print(-10 >> 3)

4.字符串

4.1 什么是字符串

  • 字符串是python中一种常用的 有序 但是 不可变的 容器类的数据类型,可以同时存储多个字符。属于序列
  • 字面量:使用单引号或者双引号将任意字符括起来,就是字符串常量。
    str1 = '都会死恢复到萨格fdsfdsfurui22'
  • 字符:指的是字符串中的每一个单元。注意,python中只有字符的概念,没有字符类型

4.2 字符串中的内容

a.普通字符:包含数字字符、字母、普通符号:+ - () % # @ 中文 等

‘123 ’ ‘味位’

b.转义字符:通过反斜杠将一些字符转换成有特殊功能或特殊意义的字符

\n -- 换行
\t --制表符
\ --
' --'
" --"

注意:一个转义字符代表一个字符

c.阻止转义:在字符串最前面加r 或 R,可以阻止转义字符转义

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

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,114评论 0 13
  • 今天是儿子学校大学毕业典礼!到此为止标志着大学生活全部结束了!大家猜想我一定兴致勃勃去参加典礼了吧。猜错!别看我人...
    魅力春天阅读 527评论 5 11
  • 文 / 隔壁紫公子 每个团队都会出现空降的管理者,而在一个已经稳定的团队里,一个从外部空降的管理者最开始的压力是很...
    紫竹阅读 1,026评论 0 3
  • 长这么大,我还真不是一个独立的女人,上大学了,妈妈还关照我的生活,我自己处理和舍友的关系就很糟糕,不太会交际,一...
    诗琴画书久远世事阅读 276评论 3 1
  • 你的鹿哥哥阅读 173评论 0 0