2019-07-27

周总结

day1

1.注释
注释是代码中对代码进行解释说明的文本内容
注释分为单行注释和多行注释
2.语句
python中一般是一条语句占一行,多条语句占一行要用分号隔开,语句过
长需要换行可以加"/"换行,但不能破坏数据本身
3.缩进
python有严格的缩进规则,代码具有高度的规范性,在开头的时候不能随便加缩进
但需要缩进的时候必须缩进
4.标识符
标识符就是由字母、数字、下划线组成,主要用来给变量命名,在2.x后面的版本中,可以用文字命名,但一般不使用
5.关键字
关键是是在python中具体特殊意义和功能的标识符,
注意:自定义变量命名是不能用关键字作为变量的名字
6.数据类型
int(整型),float(浮点型),str(字符串),bool(布尔)
7.类型转换
类型名(数据)
8.输入输出函数
print() - 输出函数
input() - 输入函数

9.进制转换

9.1.二进制
a.基数:0,1
b.进位:逢二进一 10(二进制) == 2(十进制)
c.位权:abc = a2^2 + b2^1 + c*2^0
d.表示方式:在二进制数前加前缀0b/0B
e.转换:bin(数字)

num1 = 0b1011
print(num1)
a = bin(12)
print("a = ",a)

9.2.八进制
a.基数:0 - 7
b.进位:逢八进一 10(8进制) == 8(十进制)
c.位权:abc = a8^2 + b8^1 + c*8^0
d.表示方式:在八进制数前加前缀 0o/0O
e.转换:oct(数字)

num2 = 0o67
print(num2)
b = oct(200)
print("b = ", b)

9.3.十六进制
a.基数:0,1,2,3,4,5,6,7,8,9,a/A,b/B,c/C,d/D,e/E,f/F (字母大小写都可以)
b.进位:逢十六进一 2d(十六进制) == 45(十进制)10(十六进制) == 16(十进制)
c.位权:111 = 16^2 + 16^1 + 16^0 = 273
d.表示方式:在十六进制数前加前缀 0x/0X
e.转换:hex(数字)

num3 = 0x89
print(num3)
c = hex(200)
print("c = ", c)

10.原码、反码和补码
计算机存数据的时候,只能存数字,而且存的是数字的二进制补码
位(bit)
字节(byte)
1字节 = 8bit
1kb = 1024byte
1M = 1024kb
1G = 1024M
1T = 1024G
注意:正数的原码、反码和补码一样

10.1.原码 = 符号位(0表示正,1表示负) + 真值(数字转换成二进制的值)

10 -> 1010(真值)
10的原码: 00000000 00000000 00000000 00001010
-10的原码: 10000000 00000000 00000000 00001010

10.2.负数反码 = 符号位不变,其他位取反(0变1,1变0)

10的反码: 00000000 00000000 00000000 00001010
-10的反码: 11111111 11111111 11111111 11110101

10.3.负数补码:反码加1
10的补码: 00000000 00000000 00000000 00001010
-10的补码: 11111111 11111111 11111111 11110110

10.4.计算机负数采用补码的原因:计算机没有减法器,负数采用原码进行加法运算
的时候结果不对,采用补码结果才对

11 运算符
python支持的运算符:数学运算符、比较运算符、逻辑运算符、位运算,赋值运算符
1.数学运算符: +,-,,/,%(取余),//(整除),(幂运算)
1.1.+,-,
,/,和数学中加减乘除的功能一模一样
2.1.% - 求余数
a.判断一个数是否能被另外一个数整除
b.判断一个数的奇偶性:让数字对2取余,看结果是0还是1
c.获取一个数的最后几位数

num = 123
print(num % 10)

2.2.// - 求商,取商的整数部分(整除)

print(10 // 3)
num = 123
print(num // 100)

2.3.** - 幂运算(求次方值)

print(2**3)
print(16**0.5)  #开平方
print(8**(1/3)) #开立方

3.比较运算符:>,<,>=,<=,==,!=
注意:所有的比较运算符的结果都是布尔值(不是True就是False)

,<,>=,<=和数学张总相应的比较运算符是一样的
== -判断是否相等
!= -判断是否不相等
python中比较大小的时候可以像数学一样连写表示范围

x = 20
print(1 <= x <= 100)

day2

变量

1.什么是变量
变量是在程序中开辟空间存储数据用的

2.怎么声明变量
2.1.语法
变量名 = 值
2.2.说明:
变量名 - 程序员自己命名
要求:是标识符,不能是关键字
规范:遵守PEP8命名规范 - 变量名中所有的字母都小写,如果变量名
由多个单词组成,单词之间用下划线隔开
见名知义 - 看见变量名大概知道变量中存储的是什么数据

= -> 赋值符号,将右边的值赋给左边的变量

值 - 任何有结果的表达式,可以是具体的数据,也可以是赋值过的变量,或者是
任何的运算表达式

3.1.声明变量

num = 10  # 将数字100存储到num中,使用num的时候就会使用num中存储的数据
num_1 = 20
num_2 = num_1
num_3 = num_1 + num
print(num_3)
num = 20
print(num)

同一个变量可以存储不同类型的值,但是变量必须先声明/赋值在使用

3.2.同时声明多个变量,赋相同的值
语法: 变量名1 = 变量名2 = ... = 变量名n = 值

a = b = c = 100
print(a, b, c)

3.3.同时声明多个变量,赋不同的值
变量的个数要和值的个数保持一致
语法:变量名1,变量名2,...,变量名n = 值1,值2,...,值n

name, age, sex = "小林", 18, "女"
print(name, age, sex)

3.4.声明变量和给变量赋值的原理(重要)
先在内存中开辟空间存储数据(内存空间的大小由数据的大小动态的分配),
然后再将保存数据的内存空间的地址赋给变量
用一个变量给另一个变量复制的时候,实质是将变量的地址赋给新的变量

num_4 = 300
print(type(num_4))
print(id(num_4))  # 获取变量中数据在内存中的地址

运算符

运算符:数学运算符、比较运算符、逻辑运算符、位运算、赋值运算符

3.逻辑运算符:and(逻辑与运算),or(逻辑或),not(逻辑非运算)
所有的逻辑运算符的运算对象是布尔,结果也是布尔
3.1 and:
a. 运算规则: 全真才真,有假则假

    True and True     - True 
    True and False    - False
    False and True    - False
    False and False   - False

b.什么时候用:当希望多个条件同时满足的时候,就用and将多个条件连接。
and相当于生活中的并且

3.2 or
a.运算规则:全假才假,有真则真

    True or True     - True 
    True or False    - True
    False or True    - True
    False or False   - False

b.什么时候用:当希望多个条件只要有一个条件满足的时候,
就用or将多个条件连接,or相当于生活中的或者

3.3 not
a.运算规则:True 变 False ,False 变 True

not True    - False
not False   - True

b.什么时候用;对某个条件进行否定

3.4 短路操作
逻辑与运算的短路操作:当and前面的表达式的值是False的时候,
程序不会在去执行and后面的表达式

逻辑或运算的短路操作:当or前面的表达式的值是True的时候,
程序不会在执行or后面的表达式

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

不管是什么样的赋值运算符,最终的操作都是给变量赋值;
所以赋值运算符的左边必须是变量
4.1 =: 将右边的值赋给左边的变量
4.2 复合的赋值运算符:现将赋值符号左边变量中的值取出来,
然后进行指定的运算,最后将运算结果重新赋值给左边的变量
注意:复合的赋值运算符的左边必须是已经赋值过的变量

位运算

位运算操作的是数字的补码的每一位;位运算因为是直接操作存储空间的每一位,
所以执行效率要比一般的运算要高很多

5.位运算: &(按位与运算),|(按位或运算),~(按位取反),^(按位异或),<<(左移),>>(右移)
5.1 按位与:数字1 & 数字2 -> 两个数字补码上相同位置上的数,如果都是1结果就是1,
如果有一个是0结果就是0

5.2 按位或:数字1 | 数字2 -> 两个数字补码上相同位置上的数,如果都是0结果就是0,
如果有一个是1结果就是1

5.3 按位取反:~数字 -> 将数字补码上的每一位的值由0变成1,由1变成0

5.4 ^异或:数字1 ^ 数字2 -> 两个数补码上相同位置上的值,
如果相同结果是0,不同结果是1
特点:一个数异或同一个数两次,结果就是这个数本身

5.5 << 左移 和 >> 右移

数字 << 位数(n) -> 让数字的补码整体左移n位,低位用0补充 -> 数字 * (2**n)

数字 >> 位数(n) -> 让数字的补码整体右移n位,正数高位补0,负数高位补1 -> 数字 // (2**n)

应用:

1.乘2的次方或者整除2的次方的操作 (<< >>)
2.数字 & 1 == 0 -> 偶数; 数字 & 1 == 1 -> 奇数

运算符的优先级:
数学 > 比较 > 逻辑 > 赋值
** > *,/,//,% > +,- > 位运算
如果有(),先算()里面的

day3

for循环

python中的循环有两种:for - in 循环和 while 循环
如果某段代码需要重复执行,就使用循环结构
1.for循环
1.1 语法:
for 变量名 in 序列:
循环体

1.2 说明:
for - 关键字
变量名 - 要求和声明变量的时候的变量名一样
in - 关键字
序列 - 容器型数据类型的数据,例如:字符串、列表、元组、字典、集合、
迭代器、生成器、range
循环体 - 和for保持一个缩进的一条或者多条语句:循环体中的代码就是
需要重复执行的代码

1.3 执行过程
让变量去序列中取值,一个一个的取,取完为止。每取一个值,执行一次循环体。
(python中控制for循环的循环次数,是通过控制in后面序列元素的个数来控制的)

for x in "hello":
     print(x, end=" ")

 for i in "hellohello":
     print("=======")


for i in range(0, 10):
     print("-----")

2.range函数:产生指定范围类的数字序列

a.range(n) - 产生0到n-1的整数数列
b.range(m,n) - 产生m到n-1的整数数列
c.range(m,n,step) - 从m开始每次加step产生下一个数,直到n-1为止
注意:如果for后面的变量不用,变量名用_表示
for _ in 序列:

sum1 = 0
for i in range(1, 101):
   sum1 += i
print(sum1)


统计个数
n = 0
for i in range(1, 101):
   if i % 2 == 0 and i % 3 != 0:
       n += 1
print(n)

while循环

1.while循环
1.1 语法
while 条件语句:
循环体

1.2 说明
while - 关键字
条件语句 - 只要有结果的表达式都可以(赋值语句不行)
循环体 - 和while保持一个缩进的一条或者多条语句;需要
重复执行的代码就放在循环体中)

1.3 执行过程
先判断条件语句是否为True,如果为True,就执行循环体;执行完循环体
在判断条件语句是否为True,为True又执行循环体
...
以此类推
当判断条件语句的结果为False的时候,整个循环结束,执行后面的其他语句

1.4 for和while循环怎么选?
循环次数确定的时候使用for循环
循环次数不确定和死循环要使用while循环

while True:
     num = int(input("请输入数字:"))
     if num == 0:
         break

 while True:
     pass_word = 123456
     dense = int(input("请输入密码:"))
     if dense != pass_word:
         print("密码错误!请重新输入")
     else:
         break
count = 0
while True:
    num = int(input("请输入数字:"))
    if num == 0:
        break
    else:
        if num & 1 == 0:
            count += 1
print(count)

1.continue

continue是只能出现在循环体中的关键字;
当执行循环体的时候遇到了continue,当次循环直接结束,直接进入下次循环的判断

2.break
只能用在循环体中的关键字;
执行循环体的时候,如果遇到break,整个循环直接结束

sum1 = 0
num = 1
while True:
    sum1 += num
    if sum1 > 100000:
        print(num - 1)
        break
    num += 1

3.else
for 变量 in 序列:
循环体
else:
代码段

while 条件语句:
循环体
else:
代码段

执行过程:如果循环自然死亡(自然结束)else后面的代码段会执行;
如果循环是因为遇到break而结束,else后面的代码段不会执行

day4

数据列表

1.什么是列表(list)
列表是容器型数据类型(序列),将中括号作为容器的标志,多个元素用逗号隔开,->[元素1,...,元素n]
特点:可变的(指的是列表中元素可变 - 元素支持增删改),有序的(支持下标操作)

2.声明列表
变量名 = [元素1,..,元素n]
[] -> 空列表

3.列表中的元素:任何类型的数据都可以作为列表元素;同一个列表中数据的类型可以不一样

4.获取列表中的元素(查)
4.1 获取单个元素
a.语法:
列表[下标] - 获取列表中指定下标对应的元素
b.说明:
列表 - 结果是列表的表达式(列表数据、列表变量等)
[] - 固定写法
下标 - 下标又叫索引;列表中每个元素都有固定的下标值来表示元素在列表中的位置。
范围1:0 - 长度-1 (从前往后的第一个元素、第二个元素...)
范围2:-1...-长度 (从后往前数,倒数第一个元素,倒数第二个圆....)
注意:下标不能越界(超过范围)

4.2 获取部分元素
列表切片的结果是小列表
a.语法:
列表[开始下标:结束下标:步长] - 从开始下标开始,每次增加步长的值去取下一个元素,
直到取到结束下标前为止
(在列表中获取range(开始下标,结束下标,步长))
产生的数字序列作为下标的元素
注意:
步长为正表示开始下标到结束下标是从前往后取,所以开始下标对应的元素必须在结束下标对应
元素的前面,否则结果是[]
步车为负表示开始下标到结束下标是从后往前取,所以开始下标对应的元素必须在结束下标对应
元素的后面,否则结果是[]

省略步长;列表[开始下标:结束下标] -- 相当于步长是1
省略下标:
省略开始下标:[:结束下标]/ [:结束下标:步长]
省略开始下标:步长为正,从第一个元素开始往后取,步长为负,从最后一个元素开始往前取

省略结束下标:[开始下标::步长]/[开始下标:]
省略结束下标:步长为正,取到最后一个位置;步长为负,取到第一个为止

两个下标都省略:列表[::步长]/[:]

4.3 遍历 - 将列表中的元素一个一个的取出来
a.直接遍历元素
for 变量 in 列表:
循环体
b.通过遍历下标来遍历列表元素
len(列表) - 获取列表中元素的个数
for index in range(len(列表)):
循环体

增删改
  1. 增(增加列表中的元素)

1.1 列表.append(元素) - 在列表的最后添加一个元素
1.2.列表.insert(下标,元素) - 在列表指定下标前插入一个元素

  1. 删(删除列表中的元素)

2.1.del 列表[下标] - 删除列表中指定下标对应的元素(下标不能越界)
2.2.remove(元素) - 删除列表中第一个指定元素 (元素必须存在)
2.3.列表.pop(下标) - 取出列表中指定下标对应的元素,返回被取出的元素
列表.pop() - 取出列表中最后一个元素,返回被取出的元素

  1. 改(修改列表中元素的值)

列表[下标] = 新值 - 下标不能越界

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

推荐阅读更多精彩内容

  • 列表list 1、列表基础 1.列表(list)列表是容器型数据类型(序列),将中括号[]作为容器的标志,多个元素...
    浩子_唯一号阅读 112评论 0 1
  • DAY 01 JAVA简述 Java是由SUN公司在1995年推出的一门高级编程语言,是现今服务器端的首选编程语言...
    周书达阅读 896评论 0 0
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,724评论 0 38
  • 作业 1.已知一个数字列表,求列表中心元素 2.已知一个数字列表,求所有元素和 3.已知一个数字列表,输出所有奇数...
    林席川阅读 334评论 0 0
  • 1.已知一个数字列表,求列表中心元素。 2.已知一个数字列表,求所有元素和。 3.已知一个数字列表,输出所有奇数下...
    Wa_ngli阅读 105评论 0 0