文章目录
  1. 1. print()函数和变量
    1. 1.1. 知识一:print()函数、算数运算符
      1. 1.1.1. print(‘’)/print(“”)直接打印内容
      2. 1.1.2. pint()让计算机读懂括号里面的内容,打印最终内容
      3. 1.1.3. print()函数输出不换行
      4. 1.1.4. print()函数输出换行
      5. 1.1.5. 算数运算符
    2. 1.2. 知识二:转义字符
    3. 1.3. 知识三:变量和赋值
  2. 2. 数据类型和转换
    1. 2.1. 知识四:数据类型
      1. 2.1.1. 字符串
      2. 2.1.2. 整数
      3. 2.1.3. 浮点数
    2. 2.2. 知识五:type()查看数据类型
    3. 2.3. 知识六:数据转换
  3. 3. 条件判断和条件嵌套
    1. 3.1. 知识七:条件判断
      1. 3.1.1. 单向判断
      2. 3.1.2. 双向判断
      3. 3.1.3. 多行判断
    2. 3.2. 知识八:if嵌套
  4. 4. input函数
    1. 4.1. 知识九:input()函数
    2. 4.2. 补充知识:格式化字符串
  5. 5. 列表和字典
    1. 5.1. 列表和字典引入
    2. 5.2. 知识一:列表
      1. 5.2.1. 定义一个列表
      2. 5.2.2. 打印列表
      3. 5.2.3. 列表_提取单个元素
      4. 5.2.4. 列表添加
      5. 5.2.5. 列表删除
      6. 5.2.6. 列表_合并
      7. 5.2.7. 列表_extend的用法
      8. 5.2.8. 列表去重
      9. 5.2.9. 列表生成式
    3. 5.3. 知识二:字典
      1. 5.3.1. 字典_定义
      2. 5.3.2. 字典_打印某个值
      3. 5.3.3. 字典_添加
      4. 5.3.4. 字典_删除
      5. 5.3.5. 字典_遍历
      6. 5.3.6. 遍历字典的键值对
      7. 5.3.7. 字典_直接遍历字典所有的值
  6. 6. 生成器
    1. 6.1. 什么是生成器
  7. 7. for循环和while循环
    1. 7.1. for…in..循环
    2. 7.2. 知识二:while循环
    3. 7.3. 知识三:两种循环的对比
      1. 7.3.1. 什么时候用for循环,什么时候用while循环?
  8. 8. 布尔值和四种语句
    1. 8.1. 知识一:布尔值
    2. 8.2. 知识二:布尔运算
      1. 8.2.1. 比较运算符
      2. 8.2.2. 五种运算:and、or、not、in、not in
    3. 8.3. 知识三:break语句
    4. 8.4. 知识四:continue语句
    5. 8.5. 知识五:pass语句
    6. 8.6. 知识六:else语句
  9. 9. 函数
    1. 9.1. 知识一:函数
      1. 9.1.1. 定义函数
      2. 9.1.2. 参数类型
        1. 9.1.2.1. 位置参数
        2. 9.1.2.2. 默认参数
        3. 9.1.2.3. 不定长参数
      3. 9.1.3. 返回值
      4. 9.1.4. 函数作用域
  10. 10. 面向对象
    1. 10.1. 知识二:面向对象编程
      1. 10.1.1. 类的创建
      2. 10.1.2. 类的实例化(对象)
      3. 10.1.3. 初始化函数(构造函数)
      4. 10.1.4. 继承
        1. 10.1.4.1. 多层继承
      5. 10.1.5. 多重继承
  11. 11. 编码和文件读写
    1. 11.1. 编码
      1. 11.1.1. 二进制
      2. 11.1.2. 编码表
    2. 11.2. 文件读取
    3. 11.3. 文件写入
    4. 11.4. 关于读写模式参数选择
    5. 11.5. 使用with关键字读写文件

print()函数和变量

知识一:print()函数、算数运算符

学编程第一步干嘛,当然是问一句”世界,你好”咯

1
2
print('hello,world')
运行结果 > hello,world

pint()让计算机读懂括号里面的内容,打印最终内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
print(2+1) #加法
运行结果> 3

print(2-1) #减法
运行结果> 1

print(2*1) #乘法
运行结果> 2

print(2/1) #除法
运行结果> 2

print(2**3) #次方
运行结果> 8

print(10%3) #取余
运行结果> 1

print(10//3) #取整
运行结果> 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print('hello',end='')
print('world')
运行结果 > helloworld


print('hello',end=' ')
print('world')

运行结果 > hello world


print('hello',end='!')
print('world')

运行结果 > hello!world
1
2
3
4
5
6
print('') #相当于回车

print('''
123
456
789 '''') #内部自动换行

算数运算符

知识二:转义字符

在编程语言中,我们用转义字符表示不能直接显示的字符,比如换行键、后退键,回车键等。

知识三:变量和赋值

  • 只能是一个词
  • 只能包含字母、数字、下划线
  • 不能以数字开头
  • 尽量描述包含的内容

name = ‘小千’

数据类型和转换

知识四:数据类型

最常用的数据类型有三种——字符串(str)、整数(int)和浮点数(float)

字符串

只要是被【单/双/三引号】这层皮括起来的内容,不论那个内容是中文、英文、数字甚至火星文。只要是被括起来的,就表示是字符串类型。

1
2
3
slogan = '命运!不配做我的对手!'
attack = "308"
achieve = "First Blood!"

整数

是正整数、负整数和零的统称,是没有小数点的数字

1
2
3
number1 = 1
number2 = -1
number3 = 0

浮点数

带小数点的数字,就是浮点数

1
number = 0.33

知识五:type()查看数据类型

python中数字不能直接和字符串拼接,必须先转换字符串类型在拼接

1
2
3
4
5
6
7
8
gain = '获得'
number = 5
print(type(gain))
print(type(number))

运行结果>>>
<class 'str'>
<class 'int'>

知识六:数据转换

  • str()函数
  • int()函数
    对于浮点数,int()函数会做取整处理。但是,同我们平时对小数四舍五入的处理方法不同,int()函数会直接抹零,直接输出整数部分
  • float()函数

条件判断和条件嵌套

知识七:条件判断

python中用缩进来包含一段内容。如其他语言中的{}

单向判断

1
2
if xxxx:
print(xxxx)

双向判断

1
2
3
4
if xxxx: 
print(xxxx)
else:
print(xxxx)

多行判断

1
2
3
4
5
6
if xxxx: 
print(xxxx)
elif:
print(xxxx)
else:
print(xxxx)

知识八:if嵌套

input函数

知识九:input()函数

  • 收集信息

用来收集信息,并且一定要在终端处输入数据。input()函数的输入值(搜集到的回答),永远会被强制性地转换为字符串类型。

  • input()_赋值
1
name = input('内容')
  • input()_数据类型转换
1
choice = int(input('请输入您的选择:'))

补充知识:格式化字符串

  • {}
1
print('{}--{}'.format(1,2))
  • %

如图

列表和字典

列表和字典引入

什么时候需要用到列表和字典?

需要将数据收纳起来的时候。

什么时候用到列表,什么时候用字典?

当数据需要 依次放好 的时候用到列表,就像把一堆东西堆起来的手拿方式。
当数据需要 打上标签 放好的时候用字典,就像图书馆的书架用标签分类。

列表和字典的常见用法?

用于 存数据 和 取数据,可以相互嵌套。
用于 for循环 ,依次遍历列表或字典。

知识一:列表

一个列表需要用中括号[ ]把里面的各种数据框起来,里面的每一个数据叫作“元素”。每个元素之间都要用英文逗号隔开。

定义一个列表

1
2
list = [1,2,3,4,5,6,7,8]
list = ['风','变','编','程']

打印列表

1
2
3
print( list ) #打印列表list
print( len ( list ) ) #打印列表list的长度
print( type ( list ) ) #打印列表list的类型

列表_提取单个元素

1
2
3
4
print( list[0:4] )  #打印列表list的第0、1、2、3个元素
print( list[1:3] ) #打印列表list的第1、2、个元素
print( list[1:] ) #打印列表list的第1个元素起的所有元素
print( list[:2] ) #打印列表list的第2个元素之前对的所有元素

列表添加

1
list.append('赞') #把元素‘赞’放进列表list的尾部

列表删除

1
del list[4] #删除列表list的第5个元素

列表_合并

1
2
list1.append(list3) #把list3当成元素添加到list1尾部
list2.extend(list3) #把list3元素添加到list2中

列表_extend的用法

1
2
3
4
5
6
num2.extend(['ABCDE'])
num2.extend('ABCDE') # extend后面是列表的话会将其合并,后面是字符串的话会将每个字符当成一个列表中的元素。
print(num2)

运行结果>>>
[ 'ABCDE', 'A', 'B', 'C', 'D', 'E']

列表去重

补充知识:集合(set)是一个无序的不重复元素序列,set()可以去重,然后生成一个集合。

1
2
3
4
list1 = [1,2,3]
list2 = [1,1,2]
print(set(list1))
print(set(list2)) # 去重,删去了重复的“1”。

列表生成式

1
2
3
4
5
6
7
8
9
10
11
12
13
list1 = [i for i in range(3)]  # 规定列表中元素的范围
print(list1)

list2 = [m+n for m in ['天字', '地字'] for n in '一二'] # 列表元素可以是组合,分别规定范围。
print(list2)

list3 = [n*n for n in range(1,11) if n % 3 == 0] # 元素既可规定范围,也可附加条件。
print(list3)

运行结果>>>
[0, 1, 2]
['天字一', '天字二', '地字一', '地字二']
[9, 36, 81]

普通方法生成上面列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
list1 = []
for i in range(3):
list1.append(i)
print(list1)

list2 = []
for m in ['天字', '地字']:
for n in '一二':
list2.append(m+n)
print(list2)

list3 = []
for i in range(1,11):
if i % 3 == 0:
list3.append(i*i)
print(list3)
  1. 扩展

有列表[0,1,2,3,4,5,6,7,8,9],要求把列表里面的每个值加1

1
2
3
4
5
6
info = [0,1,2,3,4,5,6,7,8,9]
b = []
for index,i in enumerate(info):
print(i+1)
b.append(i+1)
print(b)

#enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。

知识二:字典

  • 列表中的元素是自成一体的,而字典的元素是由一个个键值对构成的,用英文冒号连接;
  • 唯一的键和对应的值形成的组合,我们就叫做【键值对】;

字典_定义

1
scores = {'小明':95,'小红':90,'小刚':90}

字典_打印某个值

1
2
scores = {'小明': 95, '小红': 90, '小刚': 90}
print(scores['小明'])

字典_添加

1
scores['小美'] = 85

字典_删除

1
2

del scores['小刚']

字典_遍历

1
dict.items()

遍历字典的键值对

1
2
for k,v in DictName.items():
#k对应键,v对应值,k,v 的名字可以自己取,DictName是字典名

字典_直接遍历字典所有的值

1
for value in DictName.values(): print(value)  # value的名字可以自行另取 # DictName是要遍历的字典的名称 # .values():是固定的用法

生成器

什么是生成器

通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,而且创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间,在Python中,这种一边循环一边计算的机制,称为生成器:generator

创建生成器,只要把一个列表生成式的[]中括号改为()小括号,就创建一个generator

1
2
3
4
5
6
generator_ex = (x*x for x in range(10))
print(generator_ex)

结果:
[0,1,4,9,16,25,36,49,64,81]
<generatorobject<genexpr>at0x000002A4CBF9EBA0>

for循环和while循环

for…in..循环

循环的这个过程,在Python中的学名叫做【遍历】,以下列举了遍历的三种数据类型

  • 列表遍历
1
2
3
4
5
6
7
8
9
10
for i in [1,2,3,4,5]:  #列表
print(i)


运行结果>>>
1
2
3
4
5
  • 字典遍历
1
2
3
4
5
6
7
8
dict = {'日本':'东京','英国':'伦敦','法国':'巴黎'}  #字典,i会遍历字典中的每一个【键】
for i in dict:
print(i)

运行结果>>>
日本
英国
法国
  • 字符串遍历
1
2
3
4
5
6
7
8
for i in '风变编程':#字符串
print(i)

运行结果>>>




  • range(x)函数遍历
1
2
3
4
5
6
7
for i in range(3):
print(i)

运行结果>>>
0
1
2

知识二:while循环

while循环有2个要点:1)放行条件;2)办事流程。当条件被满足时,就会循环执行while内部的代码(while子句)。

1
2
3
4
5
6
7
8
9
10
a = 0
while a < 5:
a = a + 1
print(a)
运行结果>
1
2
3
4
5

知识三:两种循环的对比

什么时候用for循环,什么时候用while循环?

  • 知道循环次数的时候优先用for循环;

  • 不知道循环次数的时候用while;

  • 把一件事重复N遍,两种循环方式都可以用

1
2
3
4
5
# 乘法表
for i in range(1,10):
for j in range(1,i+1):
print( '%d X %d = %d' % (j,i,i*j),end = ' ' )
print(' ')

布尔值和四种语句

知识一:布尔值

  1. 用数据逻辑做判断的过程叫【布尔运算】
    2.【布尔运算】会产生【布尔值】
  2. 布尔值分为True和False
  3. True和False就像开关一样,决定if语句和while循环语句是否运行。

知识二:布尔运算

比较运算符

###真假判断

None,它代表的是【空值】,自成一派,数据类型是NoneType。要注意它和0的区别,0是整数0,可并非什么都没有。

1
2
3
4
5
6
7
8
9
10
11
print('以下数据判断结果都是【假】:')
print(bool(False))
print(bool(0))
print(bool(''))
print(bool(None))


print('以下数据判断结果都是【真】:')
print(bool(True))
print(bool(1))
pprint(bool('abc'))

五种运算:and、or、not、in、not in

  • 布尔值的运算_and运算

  • 布尔值的运算_or运算

  • 布尔值的运算_not
1
2
a =True
print(not a) #判断为假
  • 布尔值的运算_in、not in

a.【in】的意思是“判断一个元素是否在一堆数据之中”,【not in】反之;
b. 如果涉及到的数据集合是字典的话,【in】和【not in】就可以用来判断字典中是否存在某个【键】

知识三:break语句

break的意思是“打破”,是用来结束循环的,一般写作if…break;

知识四:continue语句

continue的意思是“继续”。这个子句也是在循环内部使用的。当某个条件被满足的时候,触发continue语句,将跳过之后的代码,直接回到循环的开始;

知识五:pass语句

常用在if语句下,表示跳过,如果没有pass来占据一个位置表示“什么都不做”

知识六:else语句

else不但可以和if配合使用,它还能跟for循环和while循环配合使用,如果正常结束循环(没有遇到break)就执行else语句

1
2
3
4
5
6
7
for i in range(5):
a = int(input('请输入0结束循环,你有5次机会:'))
if a == 0:
print('你触发了break语句,导致else语句不会生效。')
break
else:
print('5次循环你都错过了,else语句生效了。')

函数

知识一:函数

函数是组织好的、可以重复使用的、用来实现单一功能的代码

定义函数

1
2
3
def 函数名(参数):
函数体
return 语句

参数类型

位置参数

1
2
def menu(appetizer,course):
pass

默认参数

默认参数必须放在位置参数之后

1
2
def menu(appetizer,course,dessert='绿豆沙'):
pass

不定长参数

不定长参数以星号,为元组(tuple)类型,元组是可迭代对象,这意味着我们可以用for循环来遍历它

1
2
def menu(*barbeque):
return barbeque

返回值

函数,不仅可以支持输入多个参数,而且也可以同时输出多个值

返回值同样为元组类型

1
2
def coupon():
return 'test1','test2'

函数作用域

1、一个在函数内部赋值的变量仅能在该函数内部使用(局部作用域),它们被称作【局部变量】
2、在所有函数之外赋值的变量,可以在程序的任何位置使用(全局作用域),它们被称作【全局变量】
3、global语句一般写在函数体的第一行,它会告诉Python,把该变量声明全局变量

面向对象

知识二:面向对象编程

类的创建

1
2
class Computer:
pass

类的实例化(对象)

1
my_computer = Computer()#实例化

初始化函数(构造函数)

1
2
3
4
5
class chinese:
def __init__(self, name, birth, region)
self.name = name # self.name = '吴枫'
self.birth = birth # self.birth = '广东'
self.region = region # self.region = '深圳'

继承

多层继承

1
2
class B(A):
class C(B):

多层继承(纵向)时,子类创建的实例可调用所有层级父类的属性和方法。

多重继承

1
class A(B,C,D):

多重继承(横向)时,根据与子类的相关顺序从左往右排,A是B,C,D三个父类的子类,但是在调用类方法和类属性时,优先从B中找,找不到再去C(就近原则)。

编码和文件读写

编码

在开始我们今天的话题前,我们先引入几个问题。在你的网络冲浪生涯里,我想你或多或少有这样的疑问:
1、为什么传说中只能读懂0和1的计算机能显示如此五花八门的内容?
2、为什么明明办的100兆的宽带,撑死就只有10几兆的下载速度?
3、为什么有时打开文件会出现这样像中毒一般的“火星文”?

编码的本质就是让只认识0和1的计算机,能够理解我们人类使用的语言符号,并且将数据转换为二进制进行存储和传输。
这种从人类语言到计算机语言转换的形式,就叫做编码表,它让人类语言和计算机语言能够一一对应起来。
要了解编码,我们还得先来聊聊二进制。由于有二进制,0和1这两个数字才能像“太极生两仪,两仪生四象,四象生八卦”一样,涵盖容纳世间所有的信息。

二进制

说起二进制,我就想起了周幽王烽火戏诸侯。西周时周幽王,为褒姒(bāo sì)一笑,点燃了烽火台,戏弄了诸侯。褒姒看了果然哈哈大笑。幽王很高兴,因而又多次点燃烽火。后来诸侯们都不相信了,也就渐渐不来了。后来犬戎攻破镐京,杀死周幽王。接下来我们以点燃烽火为例,来说明计算机怎么传输和存储数据的

假设我们都是看守城墙的小兵,你在烽火台A上,我在烽火台B上,只要你那边来了敌人,你就点着烽火台通知我。

如果只有一个烽火台,那么只有“点着火”和“没点火”两种状态,这就像电子元件里“通电”和“没通电”的状态,所以只有0和1.

但是你光告诉我来敌人还不够啊,还得告诉我敌人的数量有多少,让我好call齐兄弟做好准备。现在问题是你要怎么通知我敌人的数量呢?

所以,我们之间就约定了特别的“暗号”,来通知彼此敌情。

2019-07-12_112104

现在有两座烽火台,右边为第1座,左边为第2座。我们约定,当没有烽火台被点着的时候,表示没有敌人(00);只点着第一座烽火台的时候,表示来了一个敌人(01);只点着第二座烽火台的时候,表示来了2个敌人。(10,逢二进一)

当两座烽火台都被点着的时候(11),就表示来了3个人。

也就是这样的对应关系:

二进制 十进制
00 0
01 1
10 2
11 3

所以两个二进制位可以表示十进制的0,1,2,3四种状态。

现在你应该可以听得懂这个笑话:世界上有10种人,懂二进制和不懂二进制的。

我们继续往下推,当有三座烽火台的时候,我们可以表示0~7八种状态(也就是2的3次方)。

L-15-27-2019124154824

以此类推,当有八座烽火台的时候,我们就能表示2的8次方,也就是256种状态,它由8个0或1组成。

1
2
00000000 表示状态0: 烽火全暗,一个敌人没有,平安无事,放心睡觉。
11111111 表示状态255:烽火全亮,来了255个敌人。起来打啊!

用来存放一位0或1,就是计算机里最小的存储单位,叫做【位】,也叫【比特】(bit)。我们规定8个比特构成一个【字节】(byte),这是计算机里最常用的单位。

bit和byte长得有点像,可别混淆!1 byte = 8 bit,也就是1字节等于8比特。

到了这里上面的关于百兆流量的问题我们也就知道了,是因为运营商的带宽是以比特每秒为单位的,比如100M就是100Mbit/s,而我们常看到的下载速度KB却是以字节每秒为单位显示的,1byte = 8bit,所以运营商说的带宽得先除以8,你的百兆宽带下载速度,也就是十几兆了。

编码表

计算机一开始发明的时候,只是用来解决数字计算的问题。后来人们发现,计算机还可以做更多的事,正所谓能力越大,责任越大。但由于计算机只识“数”,因此人们必须告诉计算机哪个数字来代表哪个特定字符。

于是除了0、1这些阿拉伯数字,像a、b、c这样的52个字母(包括大小写),还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,理论上每个人都可以有自己的一套规则(这就叫编码)。

但大家如果想要互相沟通而不造成混乱,就必须使用相同的编码规则。如果使用了不同的编码规则,那就会彼此读不懂,这就是“乱码”的由来。这也就可以解释上面打开文本文件出现”火星文”的原因了,存储和读取编码规则不同。出现了了乱码

为了避免乱码,一段世界历史就此启动。一开始,是美国首先出台了ASCII编码(读音:/ˈæski/),统一规定了常用符号用哪些二进制数来表示。

因为英文字母、数字再加上其他常用符号,也就100来个,因此使用7个比特位(最多表示128位)就够用了,所以一个字节中被剩下的那个比特位就被默认为0。

再后来呢,这套编码表传入欧洲,才发现这128位不够用啊。比如说法语字母上面还有注音符,这个怎么区分?得!把最后一个比特位也编进来吧。因此欧洲普遍使用一个全字节(8个比特位)进行编码,最多可表示256位,至此,一个字节就用满了!

但是前面的状态0-127位可以共用,但从状态128到255这一段的解释就完全乱套了,比如135在法语,希伯来语,俄语编码中完全是不同的符号。

当计算机漂洋过海来到中国后,问题又来了,计算机完全不认识博大精深的中文,当然也没法显示中文;而且一个字节的256位都被占满了,但中国有10万多个汉字,256位连塞牙缝都不够啊。

于是中国科学家自力更生,重写了一张编码表,也就是GB2312,它用2个字节,也就是16个比特位,来表示绝大部分(65535个)常用汉字。后来,为了能显示更多的中文,又出台了GBK标准。

不仅中国,其他国家也都搞出自己的一套编码标准,这样的话地球村村民咋沟通?日本人发封email给中国人,两边编码表不同,显示的都是乱码。

为了沟通的便利,Unicode(万国码)应运而生,这套编码表将世界上所有的符号都纳入其中。每个符号都有一个独一无二的编码,现在Unicode可以容纳100多万个符号,所有语言都可以互通,一个网页上也可以显示多国语言。

看起来皆大欢喜。但是!问题又来了,自从英文世界吃上了Unicode这口大锅饭,为迁就一些占用字节比较多的语言,英文也要跟着占两个字节。比如要存储A,原本00010001就可以了,现在偏得用两个字节:00000000 00010001才行,这样对计算机空间存储是种极大的浪费!

基于这个痛点,科学家们又提出了天才的想法:UTF-8(8-bit Unicode Transformation Format)。它是一种针对Unicode的可变长度字符编码,它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,而当字符在ASCII码的范围时,就用一个字节表示,所以UTF-8还可以兼容ASCII编码。

Unicode与UTF-8这种暧昧的关系一言以蔽之:Unicode是内存编码的规范,而UTF-8是如何保存和传输Unicode的手段。

unicode编码表:https://unicode-table.com/cn/

文件读取

1
2
3
file1 = open('绝对或相对路径','a',encoding='utf-8')
file1.read()
file1.close()

文件写入

1
2
3
file1 = open('绝对或相对路径','a',encoding='utf-8')
file1.write('写入的内容')
file1.close()

关于读写模式参数选择

L-15-25-201911515955

使用with关键字读写文件

1
2
with open('abc.txt','a') as file1:
file1.write('张无忌')
文章目录
  1. 1. print()函数和变量
    1. 1.1. 知识一:print()函数、算数运算符
      1. 1.1.1. print(‘’)/print(“”)直接打印内容
      2. 1.1.2. pint()让计算机读懂括号里面的内容,打印最终内容
      3. 1.1.3. print()函数输出不换行
      4. 1.1.4. print()函数输出换行
      5. 1.1.5. 算数运算符
    2. 1.2. 知识二:转义字符
    3. 1.3. 知识三:变量和赋值
  2. 2. 数据类型和转换
    1. 2.1. 知识四:数据类型
      1. 2.1.1. 字符串
      2. 2.1.2. 整数
      3. 2.1.3. 浮点数
    2. 2.2. 知识五:type()查看数据类型
    3. 2.3. 知识六:数据转换
  3. 3. 条件判断和条件嵌套
    1. 3.1. 知识七:条件判断
      1. 3.1.1. 单向判断
      2. 3.1.2. 双向判断
      3. 3.1.3. 多行判断
    2. 3.2. 知识八:if嵌套
  4. 4. input函数
    1. 4.1. 知识九:input()函数
    2. 4.2. 补充知识:格式化字符串
  5. 5. 列表和字典
    1. 5.1. 列表和字典引入
    2. 5.2. 知识一:列表
      1. 5.2.1. 定义一个列表
      2. 5.2.2. 打印列表
      3. 5.2.3. 列表_提取单个元素
      4. 5.2.4. 列表添加
      5. 5.2.5. 列表删除
      6. 5.2.6. 列表_合并
      7. 5.2.7. 列表_extend的用法
      8. 5.2.8. 列表去重
      9. 5.2.9. 列表生成式
    3. 5.3. 知识二:字典
      1. 5.3.1. 字典_定义
      2. 5.3.2. 字典_打印某个值
      3. 5.3.3. 字典_添加
      4. 5.3.4. 字典_删除
      5. 5.3.5. 字典_遍历
      6. 5.3.6. 遍历字典的键值对
      7. 5.3.7. 字典_直接遍历字典所有的值
  6. 6. 生成器
    1. 6.1. 什么是生成器
  7. 7. for循环和while循环
    1. 7.1. for…in..循环
    2. 7.2. 知识二:while循环
    3. 7.3. 知识三:两种循环的对比
      1. 7.3.1. 什么时候用for循环,什么时候用while循环?
  8. 8. 布尔值和四种语句
    1. 8.1. 知识一:布尔值
    2. 8.2. 知识二:布尔运算
      1. 8.2.1. 比较运算符
      2. 8.2.2. 五种运算:and、or、not、in、not in
    3. 8.3. 知识三:break语句
    4. 8.4. 知识四:continue语句
    5. 8.5. 知识五:pass语句
    6. 8.6. 知识六:else语句
  9. 9. 函数
    1. 9.1. 知识一:函数
      1. 9.1.1. 定义函数
      2. 9.1.2. 参数类型
        1. 9.1.2.1. 位置参数
        2. 9.1.2.2. 默认参数
        3. 9.1.2.3. 不定长参数
      3. 9.1.3. 返回值
      4. 9.1.4. 函数作用域
  10. 10. 面向对象
    1. 10.1. 知识二:面向对象编程
      1. 10.1.1. 类的创建
      2. 10.1.2. 类的实例化(对象)
      3. 10.1.3. 初始化函数(构造函数)
      4. 10.1.4. 继承
        1. 10.1.4.1. 多层继承
      5. 10.1.5. 多重继承
  11. 11. 编码和文件读写
    1. 11.1. 编码
      1. 11.1.1. 二进制
      2. 11.1.2. 编码表
    2. 11.2. 文件读取
    3. 11.3. 文件写入
    4. 11.4. 关于读写模式参数选择
    5. 11.5. 使用with关键字读写文件