WHCSRL 技术网

网络安全入门:Python 基础指南

人生苦短,我用 Python —— Life is short,you need Python

在这里插入图片描述

一、Python 初识

1、Python 简介

Python是一种「基于C语言实现的」的,「开源」的,「面向对象」的,「动态数据类型」「解释型」语言。
1989年圣诞节期间,Python的「创始人吉多·范罗苏姆」(Guido van Rossum)为了打发无聊的时间,开发出了一款解释型语言,命名为Python(蟒蛇),并于1991年公开发行。

2、Python 的优势?

1)学习成本低

Python的所有内容都是免费开源的,这意味着你不需要话一分钱就可以「免费使用」Python;Python的语法简单且优雅,相对于其他语言「学习难度较低」,入门非常快。

在这里插入图片描述

2)开发成本低

在互联网上流传着这么一个笑话,说同样一个功能, 「C语言」需要 100 行代码才能实现,「Java」需要 10 行代码就能实现,而「Python」只需要 1 行代码就能实现。
Python有丰富的「库」可以使用,这些库提供了大量的「基础实现」,在编码过程中,可以方便的使用这些库,从而避免了大量代码的编写过程。代码量的下降意为着「开发周期」的缩短,这在一定程度上减轻了程序员的开发负担,同时提高了开发的「效率」,正因如此,在Python领域流传着这样一句话:「人生苦短,我用Python」

3)语言生态丰富

由于开源的特性,Python具有丰富且强大的第三方库,这使得Python在web开发,数据分析等领域都有着广泛的应用,随着大数据和人工智能的发展,Python的上升趋势非常明显,甚至一度超过C语言和Java,首次成为「最受欢迎的程序语言」

在这里插入图片描述

3、第一个 Python程序

1)新建 HelloPython.py文件

选择一个空旷的目录,在里面新建一个「文本文件」,文件名为 HelloPython.txt
在这里插入图片描述

2)编写代码

双击打开文件(或使用任意文本编辑器打开文件),在文件中输入以下内容

print('Hello Python')
  • 1

在这里插入图片描述
按 Ctrl+s 保存文件,而后关闭文件。

3)运行文件

在当前目录下打开cmd (目录上方的地址栏中输入cmd,回车)
在这里插入图片描述
在打开的cmd中输入以下命令,执行 HelloPython.txt文件

python HelloPython.txt
  • 1

我们可以看到,窗口中输出了 HelloPython,第一个Python程序完成了
在这里插入图片描述

4)修改文件扩展名

虽然普通的文本文件就可以执行Python代码,但为了提高辨识度,我们尽量将Python文件的「后缀名」写成 .py

右键文件选择重命名,将文件后缀名由 .txt修改为 .py,如果出现以下提示,点击是即可

在这里插入图片描述
修改后的文件是下面这样

在这里插入图片描述
接下来,在cmd中输入以下命令,运行 HelloPython.py文件

python HelloPython.py
  • 1

修改文件名后,仍然可以正常输出 Hello Python
在这里插入图片描述

二、Python 基础

1、注释

Python中的代码都是用「英语」写的,对于母语不是英语的我们来说,「阅读」英语的代码,肯定没有阅读「汉字」那么方便。我之前做开发的时候就深有体会,上午才写完的代码,下午再去看,就已经看不太懂了(手动捂脸)。当然,这是我自己写的代码,从头到尾捋一遍还是能明白的。那么问题来了,自己写的代码就已经这么难看懂了,要是看别人写的代码,岂不是要读天书?这个时候我们就可以使用「注释」了,注释就是对代码的「理解」「说明」,可以帮助开发者了解代码的含义

1)使用场景

比如我们刚写完了一行代码,为了防止下次再看的时候不知道这行代码是什么意思,就可以在代码上方写上一行注释。

# 这行代码的意思是定义一个变量
name = '张三'
  • 1
  • 2

需要注意的是:注释后面的内容「不会被当做代码编译执行」,仅仅起到「辅助说明」的作用

2)语法规范

Python作为一款「优雅」的语言,对于代码的「语法格式」有着近乎「苛刻」「规范」,这其中自然也包括注释

  1. Python注释通常以 # 开头
  2. 注释「单独一行」时, # 「左边」需要「顶格」写,不允许有空格; # 「右边」和注释内容之间需要有一个「空格」作为「间隔」,以增加代码的「可读性」
  3. 注释写在「代码后面」时, # 「左边」需要有「两个空格」 # 「右边」和注释内容之间需要有一个「空格」作为「间隔」

3)单行注释

单行注释是Python注释的一种使用方式,顾名思义,就是「只占一行」的注释,当行注释可以写在代码「上方」,也可以写在代码「右方」

案例1:在代码的上方编写注释

# 单行注释
print('hello Python') 
  • 1
  • 2

案例2:在代码的右方编写注释

print('hello Python')  # 单行注释
  • 1

4)多行注释

多行注释是Python注释的另一种使用方式,顾名思义,就是「占据多行」的注释,多行注释通常写在代码的上方用于解释代码的作用,同时可以间隔上下两段代码,增加代码的可读性。

案例3:在代码上方编写注释,解释整段代码的作用

# 这段代码的作用是
# 作用一:***
# 作用二:***
print('假装是一段代码')
  • 1
  • 2
  • 3
  • 4

5)三重引号字符串

除了上面提到的单行注释和多行注释以外,Python中还提供了另一种注释来代替多行注释,也就是「三重引号字符串」,使用时只需要建立一个「没有名字」的三重引号字符串即可。顾名思义,三重引号字符串并不是严格意义上的注释,只能当做一种多行注释的书写方式。

三重引号字符串有两种书写方式:「单引号多行注释」「双引号多行注释」

顾名思义,单引号多行注释就是用三个「单引号」包裹的三重引号字符串,双引号多行注释就是用三个「双引号」包裹的三重引号字符串

需要注意的是:无论是单引号多行注释还是双引号多行注释,引号都必须是「英文状态」下的引号,并且引号左侧需要「顶格」

案例4:在代码段上方编写单引号多行注释,解释整段代码的作用

'''
这段代码的作用是:
作用一:***
作用二:***
'''
print('假装是一段代码')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

案例5:在代码段上方编写双引号多行注释,解释整段代码的作用

"""
这段代码的作用是:
作用一:***
作用二:***
"""
print('假装是一段代码')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、Python 变量

变量可以理解为一个「临时存储数据」的媒介,并且这个存储的数据是可以改变的。

举个栗子

比如,我的存款是100块钱,这个存款就可以理解为一个「变量」,存款有100块钱,就可以理解为变量中存储的「数据」数据为100,如果我把这个月的50块钱工资放到我的存款里,存款由100块钱变成了150块钱,相对应的,这个名为存款的变量也会发生「改变」,变量存储的数据由100变成了150。

接下来,我们用代码的方式来打开上面的栗子

# 我的存款是100块钱
存款 = 100

# 我将50块钱工资放到存款中
存款 = 存款 + 50

# 存款发生了变化,最终的存款是
print(存款)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

程序打印的存款结果如下:
在这里插入图片描述

1)语法规范

需要注意的是:上述的栗子中,我们的变量名使用的是「中文」的存款,目的是为了更好的理解变量的含义,而在实际情况中,尽量「不要使用中文作为变量名」,这是Python中对于变量的规定,除此之外,Python还对变量的语法做了以下规定:

  1. 变量不需要「声明」,变量的「赋值操作」即是变量声明和定义的过程
  2. 变量使用等号(=)赋值,变量被赋值以后才会被「创建」,未赋值的变量不能被使用
  3. 等号(=)左边是「变量名」变量名,右边是存储在变量的「值」,即 变量名 = 变量值
  4. 定义变量时,不需要指定「变量类型」,程序运行时,Python解释器会根据等号右侧的数据自动推导出数据类型

2)数据类型

大家上学的时候肯定都学过数学,数学中有整数、小数、分数、集合等各种各样类型的数据,同样的,在Python中也有不同的「数据类型」,Python中提供了种标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

3、Numbers

Python中使用Numbers来表示「数字类型」,数字类型包括「整数」「小数」等多种类型,在Python中,整数用int来表示,小数用float来表示

1)算数运算符

算数运算符就是数学中的加减乘除,这个。。。不多说了,看图

在这里插入图片描述

2)整数(int)

「整数」就是没有小数位(小数位都是0)的数、能被1整除的数。为了方便数据类型的学习,这里先扩展一个函数:type(),type()函数可以用来「检查数据的类型」,并返回检查的结果。接下来我们通过几个案例来了解一下变量的使用

案例1:查看变量类型

定义一个整数类型的变量,用type()查看变量的类型,并将结果打印出来

代码实现

# 定义一个整数类型的变量
number = 1

# 判断变量类型
result = type(number)

# 打印变量类型
print(result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

程序执行结果如下
在这里插入图片描述
案例2:苹果的价格

已知:苹果的单价是3元,张三要买2个苹果
请问:张三需要付多少钱?

代码实现

# 苹果单价是3元
apple = 3

# 苹果的数量是2
number = 2

# 总价 = 单价 * 数量
money = apple * number
print(money)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

程序执行结果如下
在这里插入图片描述

3)浮点数(float)

浮点数就是小数

案例3:检查数据类型

定义一个小数类型的变量,使用type()查看变量的类型,并将结果输出

代码实现

# 定义一个小数类型的变量
number = 1.5

# 检查变量的类型
result = type(number)

# 打印变量类型
print(result)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

程序执行结果如下
在这里插入图片描述
案例4:苹果的价格

已知:苹果的单价是1.5元,张三需要购买3个苹果
请问:张三需要付多少钱?

代码实现

# 苹果的价格是1.5
apple = 1.5

# 苹果的数量是3
number = 3

# 总价 = 价格 * 数量
result = apple * number

# 打印结果
print(result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

程序执行结果如下
在这里插入图片描述

4、String 初识

字符串是由「数字」「字母」「下划线」组成的一串字符,常用来表示文本,比如商品的描述信息或用户的评论。

1)字符串的定义

字符串有两种定义方式,一种是「单引号」包裹的字符串,一种是「双引号」包裹的字符串,需要注意的是:必须是英文状态下的引号。

str1 = '单引号字符串'
str2 = "双引号字符串"
  • 1
  • 2

2)字符串拼接

加号(+)可以将两个或多个字符串「拼接」到一起
称号(*)可以将字符串「重复拼接」多次

接下来,我们通过几个案例来简单了解一下字符串的拼接情况

案例5:加号(+)拼接两个数字

定义两个数字类型的变量,使用加号(+)拼接两个「数字」类型的变量,观察拼接的结果

代码实现

# 定义一个数字
number1 = 2

# 定义第二个数字
number2 = 3

# 输出两个数字的拼接结果
print(number1 + number2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

程序执行结果如下
在这里插入图片描述
由以上结果可知,使用加号(+)拼接两个数字类型的变量时,执行的操作是「相加」

案例6:加号(+)拼接两个字符串

定义两个「字符串」类型的变量,使用加号(+)拼接两个变量,观察拼接的结果

代码实现

# 定义一个字符串
str1 = "abc"

# 定义第二个字符串
str2 = "def"

# 输出两个字符串的拼接结果
print(str1 + str2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

程序执行结果如下
在这里插入图片描述
由以上结果可知,使用加号(+)拼接两个字符串类型的变量时,执行的操作是「拼接」

案例7:使用加号(+)拼接字符串和数字

定义一个字符串类型的变量,定义一个数字类型的变量,使用加号(+)拼接这两个变量,观察拼接的结果

代码实现

# 定义一个字符串
str1 = "abc"

# 定义一个数字
number = 2

# 输出两个字符串的拼接结果
print(str1 + number)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

程序执行结果如下
在这里插入图片描述
报错了,说明字符串和数字之间不能使用加号(+)拼接

案例8:打印10个星号(*)

这里可以手动打印10个星号*,但如果题目改成打印1000个星号*呢,肯定不能用手动打印啊,这里我们可以利用星号*「重复」打印字符串。

定义一个字符串,字符串的值是*,定义一个数字,数字的值是10,使用星号*拼接两个变量

代码实现

# 定义一个字符串
str1 = '*'

# 定义一个数字
number = 10

# 打印字符串和数字的拼接结果
print(str1 * number)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

程序执行结果如下
在这里插入图片描述

三、Python 流程控制语句

一个程序往往包含多条代码,流程控制就是控制这些代码的「执行顺序」「执行机会」的规则

Python中提供了三种流程控制语句

  • 顺序执行
  • 分支执行
  • 循环执行

顺序执行

顾名思义,就是按照从上往下的顺序「依次执行」代码,这是最常见的一种执行流程,也是程序「默认」的执行流程

在这里插入图片描述
分支执行

分支执行根据「判断条件」来决定代码的执行机会,只有满足条件的代码分支才会被执行,未满足条件的代码分支则不会被执行

在这里插入图片描述
循环执行

循环执行常用来「重复」执行某一段代码,从而提高程序员的开发效率

1、if 条件判断语句

灾难电影中经常会面临一些令人绝望的场景,比如:大船快要沉了,幸运的是,有一些小的救生艇,但救生艇的数量有限,只能送走一小部分人,这时候就会有人喊出一句响亮的口号:让老人和孩子先走!

这时候就需要制定一个判断「条件」,也就是老人和孩子,如果满足这个条件,就可以做救生艇逃走;否则就必须留下来。

这个场景用代码来表示可以是下面这样

if 老人和孩子:
    满足条件,做救生艇逃走
else:
    不满足条件,留下来
  • 1
  • 2
  • 3
  • 4

1)基本语法

上面的栗子只是为了方便大家理解,if 条件判断语句的正确「语法」应该是下面这样的

if 判断条件:
    条件成立时,要做的事情
else:
	条件不成立时,要做的事情
  • 1
  • 2
  • 3
  • 4

接下来,我们使用代码「还原」一下上面的场景

案例1:老人优先

轮船上的众人面临「沉船」的风险,现有救生艇若干
如果是老人,则可以乘坐救生艇「逃走」
否则就留下来面对「危险」

代码实现

# 定义人物属性
man = '老人'

# 判断是否是老人
if man == '老人':
    print('老人快跑')
else:
    print('年轻人,面对困难')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

程序执行结果如下
在这里插入图片描述

2)if

if 条件判断语句并不是非得写成案例1的样子,最「简单」的语法格式是下面这样

if 条件判断:
	满足条件执行的代码
  • 1
  • 2

这种语法格式可以简单理解为:如果怎么样,就怎么样。接下来,我们通过一个案例来简单了解一下

案例2:判断成绩

张三考试回家把试卷交给爸爸,爸爸说:
如果考一百分,爸爸就「奖励」你一个棒棒糖

代码实现

# 定义张三的成绩
zhangsan = 100

# 判断成绩
if zhangsan >= 100:
    print('棒棒糖x1')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

代码执行结果如下
在这里插入图片描述

3)if else

if else 是if 条件判断语句的「常规」格式,可以简单理解为:如果怎么样,就怎么样,否则就怎么样。接下来,我们通过案例来简单了解一下

案例3:判断年龄

定义一个变量来存储「年龄」
如果年龄大于18岁,则可以去网吧玩「游戏」
否则就只能回家写「作业」

# 定义年龄
age = 18

# 判断年龄
if age >= 18:
    print('去网吧玩游戏')
else:
    print('滚回家写作业')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

程序执行结果如下
在这里插入图片描述

4)if elif else

则是if 条件判断语句的第三种格式,适用于较「复杂」的判断情况,语法格式如下:

if 判断条件:
    条件成立时,要做的事情
elif 判断条件:
    if条件不成立,elif条件成立时,要做的事情
else:
    条件都不成立时,要做的事情
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

接下来,我们通过案例来简单了解一下

案例4:判断成绩

张三考试回家把试卷扔给爸爸,爸爸说:
如果考一百分,就给你找个「女朋友」
如果没考一百分,但成绩大于90分,就给你买个「熊」
否则,我就不认你这个「儿子」

代码实现

# 定义张三的成绩
zhangsan = 100

# 判断成绩
if zhangsan >= 100:
    print('女朋友x1')
elif zhangsan >= 90:
    print('玩具熊x1')
else:
    print('儿子-1')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

程序执行结果如下
在这里插入图片描述

2、 while 循环语句

while 循环语句用于「循环」执行程序,即在条件「成立」的情况下,循环执行某段程序,常用来重复执行的相同任务。

1)基本语法

while 判断条件:
    条件满足时,做的事情1
    条件满足时,做的事情2
    ...
    处理条件
  • 1
  • 2
  • 3
  • 4
  • 5

可以简单理解为:如果满足条件,就做某件事,接下来我们通过几个案例来简单了解一下

案例1:打印1~5

i = 1
while i <= 5:
    print(i)
    i += 1
  • 1
  • 2
  • 3
  • 4

案例2:打印小星星

在控制台连续输出五行*, 每一行星星的数量依次「递增」

i = 1
while i <= 5:
    print('*' * i)
    i += 1
  • 1
  • 2
  • 3
  • 4

运行结果如下
在这里插入图片描述

2.2 列表

【列表 List】是Python中使用 最频繁 的数据类型,在其他语言中通常叫做 数组 ,列表用来存储 一串数据 ,数据和数据之间使用 逗号 分隔

列表的定义格式

names = [‘张三’, ‘李四’, ‘王五’]

列表的遍历

di = [11, 22, 33, 44]

for di in ids:
    print('my id is %%%%d' %%%% di)
  • 1
  • 2
  • 3
  • 4

列表的常用函数

在这里插入图片描述

2.3 字典

字典是Python中除列表外, 最灵活的数据类型 ,使用键值对存储数据,其中键必须是唯一的,值可以是任意类型

基础格式

student = {‘name’: ‘小明’, ‘age’: 18, ‘id’: 1}

字典遍历

for key in student:
    print('%%%%s : %%%%s' %%%% (key, student[key]))
  • 1
  • 2

常用函数

在这里插入图片描述

推荐阅读