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

知识点:

1.编码

2.while循环

3.运算符

4.数字int

5.布尔值

6.字符串

7.列表

8.元祖

 

正文开始,果然提前预习的好处就是上课的时候更容易听讲,查漏补缺,继续坚持,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的非常用方法

相关文章:

  • 2021-04-04
  • 2022-01-23
  • 2021-06-19
  • 2021-11-07
  • 2021-08-07
  • 2021-10-01
  • 2021-07-26
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
  • 2021-11-17
  • 2021-09-01
  • 2021-11-01
  • 2022-01-16
相关资源
相似解决方案