一、二进制与字符编码

(1)二进制

电脑能够识别的字符-0,1

位,

表示更多的状态的话增加计算机识别位置,一般计算计算机识别为八位(bit),
两个位置的话会有-00,01,11,10四种状态
八个位置的话会有2种状态

单位换算关系

8个bit=1个byte(字节)
1024byte=1KB(千)
1024KB=1MB(兆)
1024MB=1GB(吉)
1024GB=1TB(太)

(2)字符编码

计算机识别的八位的256种状态对应256种编码,并且编制成ASCIII字符表
ASCIII字符表中: 0~127种128种状态对应128中现实生活中的符号
A对应ASCII字符表中65号,通过calc计算器找到程序员型
2345截图20210205183450.png
十进制的65 改成二进制1000001
2345截图20210205183655.png

中国和国际字符表

4FD3D0E3CC885C8BC7AA4308623E3759.png
ASCII:为了人们方便记忆二进制字符码表格
中国:
GB2312: 1980年推出表示简体中文字符
GBK: 1995年推出简体和繁体中文
GB18030: 2000年推出含有少数民族语言的字符表(每个字符由一个、两个甚至四个组成)
Unicode:为避免中国与其他国家的字符表出现混乱,统一编制
UTF-8: 规定二次码表中英文用一个字节表示而中文用三个字节表示

用python输出“乘”字

(1)找到字符表中乘字的编码,4E58,7607F0E9E7D3C7EF3F77E997DFB690EF.png

(2)打开calc计算器,找到程序员型,找到十六进制,输入4E58

2345截图20210205191048.png

(3)换成二进制得到100111001011000

2345截图20210205191156.png

(4)打开pycharm新建一个test.py代码页输入

  1. print(chr(100111001011000)) #chr是一个函数

问题
此时会出现字符串太长翻译不出来,这是因为这里面是二进制翻译不出来

2345截图20210205191450.png
解决办法
在数字前面加上0b

  1. print(chr(0b100111001011000)) #0b表示二进制

2345截图20210205191945.png

(5)再输入以下代码得到其十进制

  1. print(ord("乘"))

2345截图20210205192314.png

(6)找到calc计算器找到“乘”的十进制

2345截图20210205192505.png
总结:
在计算机中,中文还是英文都叫做字符,一个字符对应一个整数,整数可以使用十进制、八进制、二进制或十六进制。到最后在计算机中都会转换成二进制这样计算机才能识别。

二、python中的标识符和保留字

保留字

有一些单词被python赋予了特定的定义,在我给任何对象起名字的时候不能使用

  1. import keword #keyword是关键词
  2. print(keyword.kwlist) #kwlist是keyword的一个列表

2345截图20210205194750.png
问题
先建立了一个keyword.py的文件夹

  1. import keyworld
  2. print(keword.kwlist)

2345截图20210205195155.png
出现了模块找不到的错误
分析:
可能是因为我创立的文件名和我输入代码中单词一样导致错误
解决办法:
另立文件名为keyword_demo

标识符

我对变量、函数、类、模块和其他对象起的名字。

注意

  1. 字母、数字、下划线
  2. 不能以数字开头
  3. 不能是python的保留字
  4. 严格区分大小写

    三、变量的定义与使用

    (1)变量

    变量就是一个内存中带标签的盒子,我们把需要的数据放进去。
    name=‘玛丽’
    name(变量名)
    =(赋值运算符)
    ‘玛丽’(值)
    1. name='玛丽'
    2. print(name)
    2345截图20210205205244.png

    (2)变量的使用

    概念

    标识

    表示对象所存储的内存地址,通过内置函数id(obj)来获取

    类型

    表示对象的数据类型,使用内置函数type(obj)来获取

    表示对象所存储的具体数据,使用print(obj)可以将值进行打印输出
    将name=‘玛丽’进id、类型和值进行输出
    1. name='玛丽'
    2. print(name)
    3. print('标识',id())
    4. print('类型',type)
    5. print(name)
    输出错误
    2345截图20210205210246.png
    解决办法
    代码中没有给idtype具体的对象,输入具体的对象
    1. print('标识',id(name))
    2. print('类型',type(name))
    3. print('值'name)

    2345截图20210205211236.png 注意

    变量name实际上存储的就是他这个变量的id

    (3)变量的多次赋值

    (1)当多次赋值后,变量名会指向新的空间

    1. name='玛丽'
    2. name='张三'
    3. print(name)
    2345截图20210205212535.png

    (2)输出上述代码的标识、类型和值

    1. name='玛丽'
    2. name='张三'
    3. print('标识',id(name))
    4. print('类型',type(name))
    5. print(name)
    之前输出的
    标识 2187971112656
    类型
    玛丽
    变成了内存垃圾(由相应的处理器处理)

    四、数据类型

    常用的数据类型:
    整数类型——-int———98
    浮点数类型—-float——3.1415926
    布尔类型——-bool——-True,False(只可以取两个值-真或者假)
    字符串类型—str————(只要加上单引号、双引号和三引号就称作字符串类型)

    整数类型

    英文为integer,简写为int,可以表示正数、负数和零

    整数的不同进制表示方式

  • 十进制————默认的进制
  • 二进制————以0b开头
  • 八进制————以0o开头
  • 十六进制——-以0x开头

几进制表示逢几进一
IMG_1402(20210205-223046).PNG

操作

输出类型

  1. n1=90
  2. n2=-70
  3. n3=0
  4. print(n1,n2,n3)

2345截图20210205215932.png输出上述代码的数据类型

  1. n1=90
  2. n2=-70
  3. n3=0
  4. print(n1,type(n1))
  5. print(n2,type(n2))
  6. print(n3,type(n3))

2345截图20210205220327.png
整数表示为二进制、十进制、八进制和十六进制

十进制

  1. print('十进制',118)

2345截图20210205220938.png
二进制

  1. print('二进制',10101111)

此时是读不出来这个数是多少,因为电脑不识别
2345截图20210205221259.png
因为我们要在二进制前面加上0b

  1. print('二进制',0b10101111)

最后得出该数为:175
2345截图20210205221448.png
通过calc计算器验证结果是对的
2345截图20210205221811.png
八进制

  1. print('八进制',0o176)

image.png
通过calc计算器验证成功
2345截图20210205222406.png十六进制

  1. print('十六进制'0x1EAF)

2345截图20210205222838.png
通过calc计算器检查
2345截图20210205222940.png

浮点类型

浮点类型由整数部分和小数部分组成

  1. a=3.14159
  2. print(a,type(a))

2345截图20210205223842.png

浮点数存储不精确

使用浮点进行计算时,可能会出现小数点位数不确定的情况

  1. n1=3.1
  2. n2=2.2
  3. print(n1+n2) #5.300000000000001
  4. print(n1+n2) #5.3

为什么结果后面多很多零
2345截图20210205224042.png
解决办法
因为计算机是采用二进制进行浮点数的计算所以储存浮点数会有不精确,通过导入模块decimal让计算机按照我们的要求进行计算存储。

  1. from decimal import Decimal
  2. print (Decimal('3.1')+Decimal('2.2'))

2345截图20210205230606.png
出现错误
问题分析
是因为之前我创建的keword安装包和使用decimal出现冲突
IMPORTERROR: CANNOT IMPORT NAME ‘ISKEYWORD’_enemy_sprites的博客-CSDN博客
https://blog.csdn.net/enemy_sprites/article/details/102681366

2345截图20210205232220.png
注意
并不是所有的浮点数相加都会出现错误,只是个别的

布尔类型

  1. 英文boolean简写为bool
  1. f1=True
  2. f2=False
  3. print(f1,type(f1))
  4. print(f2,type(f2))

2345截图20210205235337.png

  • 用来表示真或假的值
  • True表示真,False表示假
  • 布尔值可以转化为整数

    True——-1
    False——0

    1. print(True+1) #1加1等于2 true表示1
    2. print(False+1) #0加1等于1 false表示0

    字符串类型

    字符串又被不可变的字符序列
    可以使用单引号 ‘ ‘ 双引号 “” 三引号 ‘’’ ‘’’或””” “””
    单引号和双引号定义的字符串必须在一行
    三印号定义的字符串可以分布在连续多行

    1. str1='人生苦短'
    2. str2="唯有杜康"
    3. str3="""人生苦短
    4. 唯有杜康"""
    5. print(str1,type(str1))
    6. print(str2,type(str2))
    7. print(str3,type(str3))

    2345截图20210206002919.png

    数据类型转换

    一、为什么需要数据类型转换?

    将不同数据类型拼接在一起IMG_1403(20210206-005328).PNG

    二、数据类型转换

    ```python name=’张三’ age=20 print(type(name),type(age)) #说明name与age的数据类型不一样

  1. 当将str类型与int类型进行连接时,报错。<br />![2345截图20210206010023.png](https://cdn.nlark.com/yuque/0/2021/png/1328678/1612544452481-2d789406-3581-441f-b361-e1ca0671c71a.png#align=left&display=inline&height=247&margin=%5Bobject%20Object%5D&name=2345%E6%88%AA%E5%9B%BE20210206010023.png&originHeight=247&originWidth=1920&size=26336&status=done&style=none&width=1920)
  2. ```python
  3. name='张三'
  4. age=20
  5. print(type(name),type(age)) #说明name与age的数据类型不相同
  6. print('我叫'+name+'今年,'+age+'') #加号在其中的意思是连接符当将str类型与int类型进行连接时报错解决:类型转换
  7. print('我叫'+name+'今年,'+str(age)+'') #将int类型通过str()函数转换成str类型

2345截图20210206013235.png

(1)print(‘——str()将其他类型转换成str类型’)

首先将各种函数的类型用type函数表达出来,再用str()函数转换,最后用type函数检验转化是否成功

  1. a=10
  2. b=198.8
  3. c=False
  4. print(type(a),type(b),type(c))
  5. print(str(a),str(b),str(c),type(str(a)),type(str(b)),type(str(c)))

2345截图20210206015123.png
注意**——将其他类型转换成字符串**

(2)prinnt(‘——int()将其他类型转换成int类型’)

  1. s1='128'
  2. f1=98.7
  3. s2='76.77'
  4. ff=True
  5. s3='hello'
  6. print(type(s1),type(f1),type(s2),type(ff),type(s3))
  7. print(int(s1),type(int(s1))) #将str转换成int类型,字符串为数字串
  8. print(int(f1),type(int(f1))) #将float转换成int类型,抹零取整,截取整数部分舍去小数部分
  9. print(int(s2),type(int(s2))) #将str转换成int类型,报错,因为字符串为小数串
  10. print(int(ff),type(int(ff))) #将布尔类型转换成int类型,true可以当做1来运算
  11. print(int(s3),type(int(s3))) #将str转换成int类型时,字符串必须为数字串(整数),非数字串不允许转换

报错情况
2345截图20210206022315.png

注意

  • 文字和小数类字符串,无法转化为整数
  • 浮点数转化为整数:抹零取整

    (3)prinnt(‘——float()将其他数据类型转换成float类型’)

    1. s1='128.98'
    2. s2='76'
    3. ff=True
    4. s3='hello'
    5. i=98
    6. print(type(s1),type(s2),type(ff),type(s3))
    7. print(float(s1),type(float(s1)) )
    8. print(float(s2),type(float(s2)))
    9. print(float(ff),type(float(ff)))
    10. #print(float(s3),type(float(s3))) #字符串中的数据如果是非数据串,则不允许转换
    11. print(float(i),type(float(i)))
    2345截图20210206024211.png

注意

  • 文字无法转换为整数
  • 整数转换为浮点数末尾为.0

    五、python

    注释

  • 在代码中对代码的功能进行解释说明的标注性文字,可以提高代码的可读性

  • 注释的内容会被Python解释器忽略

    单行注释

    ———-以”#”开头,直到换行结束。
    1. #输出功能(单行注释)
    2. print('hello')

    多行注释

    ———并没有单独的多行注释标记,将一对三印号之间的代码(三引号可以随意换行)
    1. '''嘿嘿
    2. 我是
    3. 多行注释'''

    中文编码声明注释

    ———在文件开头加上中文声明注释,已指定源码文件的编码格式 #coding:*
    首先找到demo——9的文件位置
    2345截图20210206091310.png
    点击file path找到文件所在位置,用记事本打开该文件,点击文件找到另存并点击
    2345截图20210206091624.png
    在这里我们可以看到它的编码模式时UTF-8,
    更改编码模式方法—-
    新建demo_10文件
    2345截图20210206091838.png
    在文件中用记事本打开新建demo_10,然后另存为,我们会看到编码换成了ANSI(包含我们输入的gbk)
    2345截图20210206092116.png
    把文件开头的中文注释改成
    1. #coding:utf-8
    它的编码模式又换成了UTF-8
    2345截图20210206092529.png