day2 and day3 总结-python基础-坚持就是胜利

今日份快捷键学习,pycharm中按CTRL+ALT+L 自动规范化操做,不过和QQ的快捷键会有冲突,建议更改QQ的python

知识点:git

1.编码api

2.while循环app

3.运算符ide

4.数字int学习

5.布尔值ui

6.字符串编码

7.列表spa

8.元祖code

 

正文开始,果真提早预习的好处就是上课的时候更容易听讲,查漏补缺,继续坚持,fighting!!!

1,编码

  1.1编码历史变动

  编码能够理解为谍战片中电报的密码本,若是要想让电脑识别要输入的文本,须要将文本转换为电脑能识别的机器语言

  因为发明计算机的是美国人,因此最开始的编码表就是美国人所设定,所设定的这个表就为ASCII码,ASCII码包含字母大小写、数字以及特殊符号。ASCII码使用8bit,一个字节表达一个字符,因此作多显示为2**8-1个字符,也就是255个字符,例如00000001        a

  后面因为计算机的普遍传播,ASCII码已经彻底不能知足人们的平常须要,这个时候就出现了万国码,unicode,使用16bit,2个字节表示一个字符,后面使用后发现并不能实现,这个时候就进行了升级,此时采用32bit,也就是四个字节表示一个字符,虽然基本包含了全部的字符,可是,使用这种编码占用空间就很大;最终在后期的升级下,采用了如今大范围使用的UTF-8编码格式,对于英文以及传统的特殊字符采用ASCII编码,也就是8bit,一个字节,对于欧洲地区采用16bit,也就是2字节表示一个字符,对于亚洲区域则采用24bit,也就是三个字节显示一个字符。

  过于国内的字符编码,在unicode和utf-8没有大规模使用的期间,我国有本身的一套独立的编码格式,由最开始的GB2312到后面的GBK在到最新的GB18130,对于国内的编码的格式主要是,英文等传统特殊符号采用ASCII码就行,对于中文则采用16bit,也就是2字节表示,这样就形成不一样国家不一样的字符规格。

  实例

  'old男孩'在GBK中是7字节,在utf-8是9字节

  在python 2.7版本中,默认为ASCII码,不支持中文,若是须要输入中文必须在文首输入如下

  # -*- encoding:utf-8 -*-

  1.2进制的区别

  进制主要有二进制,八进制,十进制,十六进制

  二进制:只有01

  八进制:0-7

  十进制:0-9

  十六进制:0-E

   1.2.1二进制转十进制以及十进制转换二进制

二进制转化成十进制
0010 1101      ---> 
0*2**7+0*2**6+1*2**5+0*2**4+1*2**3+1*2**2+0*2**1+1*2**0
1*2**5+1*2**3+1*2**2+1*2**0 = 32 + 8 + 4 + 1 = 45

十进制转化成二进制 : 对2取余,逆向排列
    42   ——-> 0010 1010

2.while循环

  while循环是for循环以外另外的一种经常使用循环,主要使用方法以下,对于while循环主要是有三种退出方式,一为有条件退出,二为添加中断标志(break),三为调用系统中断,例如exit(),quit()

  2.1 单while循环

#while简单循环
count = 0
while count < 3:
    print(count)
    count += 1

#结果为循环显示0-2

  2.2 循环中的break语句

  break语句就是中断的意思,碰到他则跳出循环

#while循环中的break语句
count = 0
while count <100:
    print('code',count)
    if count == 5:
        print('中断!')
        break
    count +=1

#结果
code 0
code 1
code 2
code 3
code 4
code 5
中断!

  2.3循环中的continue语句

  continue语句就是跳过本次循环进行下一次循环

#while循环中的continue语句
count = 0
while count < 100:
    count += 1
    if count > 5 and count < 95:
        continue

    print('code', count)
print('到底了!')

  2.4 while与else循环

  while与if循环一致都是有else循环的 

#while与else循环
count = 0
while count <5 :
    count += 1
    print('code',count)
else:
    print('正常退出!')
print('到底了!')

#结果
code 1
code 2
code 3
code 4
code 5
正常退出!
到底了!

  2.5 while中的特殊退出

  若是在正常循环中加入break,则无论这个循环是否运行完毕,都会立刻终止。循环只要不被break打断,都会执行else语句。

#while循环的特殊退出

count= 0
while count <5:
    count += 1
    if count == 3:break
    print('code',count)
else:
    print('正常退出!')
print('到底了!')

#结果
code 1
code 2
到底了!

3.运算符

  3.1基本数学运算符:+(加) -(减) *(乘)  /(除) //(取整) %(取余)  **(取幂)

  3.2 比较运算: >(大于) <(小于) ==(等于) >=(大于) <=(小于)  !=(不等于) <>(不等于)

  3.3 赋值运算:=(赋值) +=(自加) -=(自减) *=(自乘) /=(自除) //=(自取整) **=(自幂运算) %=(自取余)

重点3.4 逻辑运算:and(与) or(或)  not(非)

   3.4.1 运算符俩边都为不等式

    1,3>4 or 4<3 and 1==1  F
    2,1 < 2 and 3 < 4 or 1>2  T
    3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1  T
    4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8   F
    5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6  F
    6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6  F

   3.4.2 运算符俩边都是数字

    规律是x or y , x为真,值就是x,x为假,值是y;x and y, x为真,值是y,x为假,值是x。

    8 or 4    8

    0 and 3   0
    0 or 4 and 3 or 7 or 9 and 6   3

   3.4.3 运算符俩边是混合模式

    print(0 or 2 < 1 and 2   , '...1')  F
    print(0 or 2 > 1 and 2    , '..2')  2
    print(1 or 2 > 1 and 2 , '..3')   1
    print(2 or 2 < 1 or 2  , '..4')  2
    print(0 and 2 < 1 and 2  , '..5')   0
    print(0 and 2 > 1  and 2 , '..6')   0
    print(1 and 2 > 1  and 2 , '..7')   2
    print(1 and 2 < 1 or 2 , '..8' )  2
    print(2 and 2 < 1 or 2 , '..9')    2        # 规律首先判断大于小于,而后判断and ,or
    print(2 and 2 > 1 or 2  , '..10') T
    print(False and 2) F
    print(True and 2) 2
    print(False or 2)  2
    print(True or 2 ) T

  3.5 成员运算:in(在里面)  not in(不能再里面)

  3.6 逻辑运算优先级:()>not>and>or

4.数据类型之int

  int就是整数,在python3中没有int和long的区分,所有都是int型,只要记住是整数运算就好

  对于int的用法

  bin(234)快速给出数字的二进制的表示形式

  print(i.bit_length())  # 获取十进制转化成二进制的有效位数 *  

5.数据类型之布尔值

  对于布尔值只有俩个数值,真与假,对应的就是1和0

  布尔值与str类型的转换  

# bool 值  True  False

# str ---> bool   非空即True
# s1 = 'fdsa范德萨了f'
# s2 = ''
# print(bool(s2))
# s1 = ''
# if s1:
#     print('非空')
# else:
#     print('此数据为空')



# bool ---> str 无心义
# b1 = True
# print(str(b1),type(str(b1)))

6.数据类型之字符串

  6.1 字符串的定义:字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,通常引号内的内容称之为字符串,通常input获得的内容都是字符串,对于数字若是须要作比较,须要对其进行强制转换。

  6.2 字符串的特性:有序,不可变,从新对其赋值,会开发新的内存地址,先后的内存地址不一致,例如

a ='我爱你!'
print(id(a))
a = '我爱你中国!'
print(id(a))

#结果
1276541360624
1276542558704
能够明显发现俩者的内存地址不一样

#id()在python中是查看变量的内存地址

  6.3 字符串的使用方法

   6.3.1字符串的切片

   字符串的切片原则上只有一个,顾头不顾尾!!!!

msg = '真相永远只有一个'
print(msg[0])#打印第一个
print(msg[0:3])#打印前三个
print(msg[:8])#打印所有
print(msg[3:7])#打印第四个到第七个
print(msg[1:])#打印打二个到最后一个
print(msg[-1])#打印最后一个
print(msg[0:4:2])#打印前四个,按照步长2
print(msg[-7:-1])#从倒数第七个到倒数第二个
print(msg[-8:])#倒数第八个到最后一个
print(msg[-8:0])#打印为空
print(msg[:5:-1])#第一个参数指向最后一个,第二个参数到正数第三个,倒序输出
print(msg[-1:-9:-1])#倒着打印字符串 #结果 真 真相永 真相永远只有一个 远只有一 相永远只有一个 个 真永 相永远只有一 真相永远只有一个 个一有只远永相真

重要 6.3.2 字符串的其余经常使用方法

   .upper与.lower #字符所有大写或者字符所有小写,验证码的不区分大小写

#普通用法
>>> s = 'AlexB'
>>> s.upper()
'ALEXB'
>>> s.lower()
'alexb'
#通常用的场景比较多的地方为,验证码,不区分大小写,将输入的字符自动大写或者小写

   .startwith与.endwith #字符串是否以什么开头或者结尾,能够切片寻找

>>> s1='aleXhahuhu'
>>> s1.startswith('al')
True
>>> s1.endswith('hu')
True
>>> s1.endswith('ha')
False

#用的比较多的就是判断读取或者是返回的值是否是指定的数值,结果返回布尔值

   .splite和.join #一个是将字符串切分,一个是将字符串拼接在一块儿,用法以下

#.splite的用法,将str分离成列表
#用法1
>>> s2 ='武汉 天津 成都'
>>> s2.split() #默认使用空格切分
['武汉', '天津', '成都']

#用法2
>>> s2 ='武汉|天津|成都'
>>> s2.splite('|')#对于其余分离也能够,不过须要输入对应的'字符'

#用法3
>>> s2 ='武汉|天津|成都'
>>> s2.split('|',1)
['武汉', '天津|成都'] #对于其余分离,也能够指定分离次数,例如只分离一次

#

>>> s2 ='|武汉|天津|成都'
>>> s2.split('|')
['', '武汉', '天津', '成都']

#对于分离标志符,若是为空,前面也会分离出空
#.join的用法 将列表中的元素链接起来,用法恰好和.splite相反
>>> s ='abc'
>>> msg = '-'
>>> msg.join(s)
'a-b-c'
#用法就是将s中每一个元素用join链接在一块儿

   .isdigitt()#判断字符串中的数据是不是数字

msg = '2'
print(msg.isdigit())
msg1 = 'abc'
print(msg1.isdigit())
#结果
True
False
还有其余的判断语句,isupper判断是不是大写字母,islower判断是不是小写字母

   .replacce()#字符串的替换

msg = '0101010101010111'
print(msg.replace('0','-1',3)) # .replace(old,new,count),能够选择替换次数

#结果
-11-11-110101010111

   .find()#在字符串中查找一个字符,并返回其索引(可切片)与.index功能相似,只是.find找不到返回-1,.index报错

msg = '0101010101010111'
print(msg.find('0',3,9)) # .find(sub,the begin,the end)

#结果
4 #只返回第一个查找到的值

   .count()#统计字符

msg = '0101010101010111'
print(msg.count('0')) 
print(len(msg))#计算字符串的长度

#结果
7
16

   .strip()#默认字符串俩头的空格换行符以及缩进符或者对特定的字符进行去除,input后默认加.strip,也能够指定特殊字符,只去除左侧用lstrip,去除右侧用rstrip,指定分割次数

msg = '     ****11111****   '
msg1 = msg.strip()
msg2 = msg1.strip('*')
print(msg1)
print(msg2)

#结果
****11111****
11111

   .center()#在字符左右加特定的字符

msg = '我爱你中国!'
msg2 = msg.center(50,'*')
print(msg2)#至关于把msg放在一个50字符的字符串的中间,其余用*补齐

#结果
**********************我爱你中国!**********************

   .format()#格式化字符串

#格式化输出的三种方式
#第一种
msg = '我是{},我今年{}岁,性别{}'.formate{'gao','18','男'}
#第二种
name =input("Name:") age =int(input("Age:")) job = input("Job:") salary = input("Salary:") info = ''' -----info of {0}----- Name = {0}; Age = {1}; Job = {2}; Salary = {3} '''.format(name,name,age,job,salary) print(info) #结果为 Name:jack Age:18 Job:student Salary:100 -----info of jack----- Name = jack; Age = jack; Job = 18; Salary = student
#第三种
msg = '我是{name},我今年{age}岁,性别{sex}'.formate{name ='gao',age ='18',sex = '男'}

     str的很是用方法(只须要了解便可)

str.rslip() #与正常的切分不一样是从右来切分,不过生成的列表仍是从左到右排序

str.swapcase ()  #大小写反转,小写变大写,大写变小写

str.capitalize()  #首字母大写,其余所有变成小写(这个是个坑,谨记)

其余
str.isupper str.islower str.title
str的很是用方法

7.数据类型之列表

  7.1列表的定义:一系列数据按照顺序排放在一块儿的集合叫列表,是python中的经常使用数据类型

  7.2列表的特性:有序

  7.3列表的经常使用方法

   7.3.1列表的定义

   空列表:li= []

   li=['a','b','c','d','e']有5个索引值,为0-4

   列表可嵌套:li =['a',['b','c'],'d']  li[1][1]='c'

   7.3.2 列表的切片

   和字符串的切片同样,都是顾头不顾尾

li = ['li','alex','wusir','haoran','zixin']

print(li[0:3])#取值前三个

print(li[:3])#取前三个

print(li[-5:])#取后五个

print(li[:6:2])#以步长2取值前5个

print(li[-1:-6:-1])#反向取值,

#结果
['li', 'alex', 'wusir']
['li', 'alex', 'wusir', 'haoran', 'zixin']
['li', 'alex', 'wusir']
['li', 'wusir', 'zixin']
['zixin', 'haoran', 'wusir', 'alex', 'li']
列表的切片

   7.3.2 列表的增长

list = ['1','2','3','4']
#列表直接追加,新增的内容放在列表最后的位置
list.append('5')#列表最后一个增长5
#根据列表位置插入,插入后不会替换已有的内容,其余内容
list.insert(0,'abc')#列表第一个位置插入一个abc
#迭代的对列表进行增长数据
a ='abc'
li.extend(a) #将可迭代的数据添加到列表中
列表的增长

   7.3.3 列表的删除

list = ['a','b',4,'c','d',4]
#list的指定位置删除,默认删除最后一个,有返回值
list.pop()#按照位置删除,有返回值
#list的指定删除,没有返回值
list.remove('a')#指定删除列表中的'a'
list.remove(4)#指定删除列表中的第一个4
#list的总体清除,不可逆,删了就删删了 
list.clear() #列表的清除,只是清除列表内的数据,列表继续保持在内存中
#通用方法啊,全局删除
del list[2]#全局删除第三个
del list [1:3]#批量删除2到3,也可切片加步长删除
del list  #全局删除,属于内存级别的删除,
列表的删除
列表的删除

  7.3.4 列表的修改

#列表的按位修改
list[2]= 'abc'#列表第三个位置修改成abc
#列表的切片批量修改
list[3:5]= 'abc'#列表批量修改,不够位则建立,不占用已有的位置
#列表的切片批量修改加步长
list[3:5:2] = 'ab'#若是有步长,则有几个位置改几个,不然就报错
列表的修改

   7.3.5 列表的查找

#列表的查找方法
#1.索引 2.切片 3.切片加步长 4.for循环
列表的索引值
li[2]#返回列表的第三个索引值的数值
li[-1]#返回列表的最后一个索引值的数值
li[0:3]#返回列表的前三个值
li[0:3:2]#按照列表的切片和步长取值
li.index('a')#返回指定元素在列表中的索引值,从左到右找到的第一个匹配值,没有则返回报错
li.count('a')#返回指定元素在列表中的数量
列表的查找

   7.3.6列表的循环

   for i in list : print('i') #循环打印一个列表

list = [1,2,3,4,5,6,7,8,9]
for i in list:
    print(i)
#结果 循环输入列表
range(10)#建立一个0---9的列表
while循环为死循环,for循环为边界循环

 

#打印列表的索引值
list =[1,2,3,4,5,6,7,8,9]
#方法一
print('方法一')
count =0
for i in list:
    print(count+1,i)
    count+=1

#方法二
print('方法二')
for i in enumerate(list):
    print(i)

#方法三
print('方法三')
for index,i in enumerate(list):
    print(index,i)

#结果
方法一
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
方法二
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
(5, 6)
(6, 7)
(7, 8)
(8, 9)
方法三
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9

   7.3.7列表的其余用法

   .sort #按照ASCII码来排序,不支持‘int’与‘str’做排序,还能够从大到小,若是要从大到小,则须要加入 reverse = True,若是有中文则按照unicode来排序

   .reverse #列表翻转

   列表也是相加或者乘法 例如 l1+l2 或者是l1 *10这样

   l3 = l1.copy() #l3 copy l1 ,俩个列表在内存空间中彻底独立,是浅copy

8.数据类型之元祖

  8.1 元祖的特性:列表是有序的,可变的,元祖也是有序的,可是不可变,因此元祖也称为只读列表,例如names =('alex','wuwu','qiqi')。元祖自己是不可变的,不过若是元祖中包含可变元素,则可变元素能够改变。总结的话就是一句话,元祖的儿子不能改,孙子有可能更改。

  8.2 元祖的功能:基本的index与count功能是有的,其余没有

#元祖的使用!
>>> name =('alex','wuwu','qiqi')
>>> print(type(name))
<class 'tuple'>
>>> name[1]
'wuwu'
>>> len(name)
3

   8.3 元祖的使用场景:很明确显示的告知他人,此处的数据不可修改。