freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Python基础语法
2022-06-06 15:55:40
所属地 山东省

导入模块

简介

在 python 用 import或者 from...import来导入相应的模块。

将整个模块(somemodule)导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为:from somemodule import *

变量

1、赋值问题

a = b = c = 1(格式要正确,要有空格,否则报错)

a,b,c = 1,2,3

2、特征

1、不允许数字开头,但可以数字结尾

2、变量名可以使用_连接,user_name

3、变量区分大小写。

Type

介绍

type内置类可以可以查看一个变量对应的数据类型

a = 52

print(type(a))

Print

格式、语法

格式:print()——括号是内容。

完整语法:print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

解析语法:value:括号里面输入的值。sep:输出时各个值之间用哪种字符隔开,默认是空格。end:执行完print语句后,接下来输出字符的位置,默认是\n换行执行。

Input

1、格式

格式:input()——括号内是输入提示。

语法:

age = input('请输入年龄:')

print(age)

2、练习题

输入一个秒数,将其按照时、分、秒的形式展示出来。

x = int(input('输入一个时间:'))
hour = x //3600   # 一小时等于3600秒,整除得到时。
min = x % 3600 // 60   #取余以后得到除去完整小时以后的秒数,再除以60,把秒换算成分。
miao = x % 60  #直接取余除以60秒以后的值,剩下的就是秒。
print(hour,min,miao)

注释

分类

单行注释:#

多行注释:''' 三个单引号''',"""三个双引号"""

快捷注释:Ctrl + / (选中的位置可快捷注释或取消注释)

Pass

1、作用

pass是一个无意义的,单纯是用来占位的。主要是为了保证一个程序运行的完整性,使程序不报错。

2、示列

a = int(input('数字:'))
if a > 18:
pass  #正常的情况if的后面是要跟判断条件和输出结果,这个只有判断条件没有结果,如果不用pass占位,程序就无法运行。
print('合格')

Python基础数据类型

数字(Numbers)

1、整数

通常被称为是整型或整数,是正或负整数,不带小数点。

2、浮点数

浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)

3、复数

复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

4、长整数

无限大小的整数,整数最后是一个大写或小写的L。(python3被废除)

字符串(String)

1、格式

可使用单引号和双引号进行包含。

另外三个单引号和三个双引号可以指定一个多行字符串。

2、转义字符

\n (换行)、\t(空格)

3、字符串索引

索引使用的是中括号

a = 'python'
print(a[2]) #定义一个变量,然后在下面输出变量的某个位置,由0开始,可知2对应的是t

4、字符串切片

格式:

字符串.(开始.结束.步长)

a = 'pythonjava'
print(a[0:10:3]) #从0开始,那么0:10:3代表,从0开始到10结束,但是每个3个显示一个,所以就是phja

5、格式化输出

format():格式化字符串以 f开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,占位符

a = '1314'
b = '521'
print(f'{a}{b}') #结果是:1314521

x = '大家好,我是{},今年{}岁'.format('张三',18)
print(x)

6、字符串更新

var = 'Hello World!'
print("已更新字符串 : ", var[:6] + 'Runoob!') #[代表结束在从var的0开始的弟6个字符],结果:Hello Runoob!
print("已更新字符串 : ", var + 'Runoob!') #完整打印var的内容,结果是:Hello World!Runoob!

字符串连接

使用 + 号进行连接。

i = 'i'
l = 'love'
y = 'you'
print(i + l + y) #结果是:iloveyou,想要结果字母间体现空格,可以在字符串的内部添加。

列表(List)

1、格式

使用[]中括号进行连接,是含有多个元素的序列。

list = [1,'2',True,2.2]
print(list)

2、列表的索引

与字符串的索引差不多,同样是从0开始,索引使用的是中括号。

list = [1,'2',True,2.2,6]
print(list[2:4])

3、列表添加元素

append(),可以追加一个元素,新追加的元素永远在列表的最后面。

list = [1,'2',True,2.2,6]
list.append(66)
print(list)

insert(),可在列表的任意位置添加元素,前提是要写好添加位置的序号(从0开始)

list = [1,'2',True,2.2,6]
list.insert(0,66)
print(list)

4、扩充列表

extend(),可以扩充列表,前提是输入的要是一个序列,字符串和集合还有列表等都是序列。

list = [1,'2',True,2.2,6] #案例一
list.extend((11,22,33,44,55))
print(list)  #结果是把11,22,33,44,55全部分开写入list
list = [1,'2',True,2.2,6]
list.extend('python')
print(list) #结果是把python这个字符串的单词拆分开成单独的单词。

5、列表删除

pop(),默认是从列表的最后的一个元素删除,另外也可以指定删除位置。

list = [1,'2',True,2.2,6]
list.pop(1) #括号内不写内容的时候,默认是删除最后一个元素。
print(list)

remove(),在不确定元素的位置时候,可用remove直接把元素写入删除。

list = [1,'2',True,2.2,6]
list.remove(1)
print(list)

6、列表修改

直接通过元素的序号进行重新赋值。

list = [1,'2',True,2.2,6]
list[1] = '22'
print(list)  #这样列表里面的'2'就变成了'22'

元组(Tuple)

元祖

元组属于不可变的列表,使用小括号表示,特性除不能修改,其他的索引和切片之类的与列表相同。

yz = (1,'2',True,2.2,6)
print(yz)

字典(Dictionary)

字典用{}大括号表示可由多种类型的元素组成,字典的组成就是:索引——>值,平时叫法:键值对,其中key(键)指的就是索引。

zd = {'name':'张三','age':18,'adder':'山东济南'}
print(zd) #其中可以分别查询,不如:ptint('name')

字典内容修改

内容修改和列表的相同,一样是用中括号进行重新赋值。

zd = {'name':'张三','age':18,'adder':'山东济南'}
zd['age'] = 22 #另外也可以通过赋值的方式,对字典进行增加:zd['兴趣爱好'] = '打篮球'
print(zd)

集合(Set)

类型

与字典的操作几乎相同

x = {1,'good',False}

布尔(Boolean)

类型

布尔类型只有True和False,用来表示真假对错。

数据类型注意事项


1、不可变数

Number(数字)、String(字符串)、Tuple(元组)。

2、可变数据

List(列表)、Dictionary(字典)、Set(集合)。

数据类型转换

1、str转int

int内置类,可以将str转换为int

(float与之同理)

x = '365'

print(int(x))

也可写为:x = int (input('444'))

2、int转str

str内置类,转换为字符串

x = 365

z = (str(x))

print(type(z))

3、转换为布尔

print(bool(100)) 显示的True,数字中只有0转换为布尔的时候是False,其他的包括负数都是True。

print(bool('hello'))显示的Ture,英文中只有空字符串的时候显示的是False。空字符串:('')("")

print(boll(None))这个结果也是False。注意:None不加引号。除此之外还有空列表([])、空元祖(())、空字典({})。

使用(x,16或者8),可以将str转换为8或16进制

x = '365'

print(int(x,8))

函数

函数

主要是用于:

1、降低编程的难度

2、增加代码的复用性

格式:

def 函数名(参数列表):
函数体
#案例一
n = 1  
s = 0
while n <= 100:
s += n #正常写法,s+=n的意思是,用n的值+s的值,刚开始s是0,当n等于1时,s+=n后s变成1,然后执行n+=1来获取新的n的值,再去循环至n<=100。
n += 1
print(s)

#案例二
def qiu_he(n,m): #define是函数的关键词,后面跟的是函数名,qiu_he的括号里面是函数的参数,下一行是函数体。
s = 0
while n <= m: #函数体
s += n
n += 1
return s
print(qiu_he(1,100))

#案例三
def area(width, height):
return width * height
d = 5
e = 8
print(area(d,e))

#案例四
def printinfo(name, age):
"打印任何传入的字符串"
print("名字: ", name)
print("年龄: ", age)
return
# 调用printinfo函数
age = 50
name = 'ddd'
printinfo(age, name)

形式参数

函数声明时,括号里面有参数—形式参数,简称形参,形参的值不确定,用来占位的。

def gushi(a,b,c,d):    #可自定义形参的名字,但是要一致,这样在输出的时候就会依次将要修改的内容填入函数体。
print('从前有座'+ a)
print('山里有座'+ b)
print(b+'里有个'+c)
print(c+d)
gushi('大山','寺庙','张三','打水')

def gushi(a,b,c,d):
print('从前有座'+ a)
print('山里有座'+ b)
print(b+'里有个'+c)
print(c+d)
gushi(d='大山',a='寺庙',b='张三',c='打水')  #这种写法相比较上面的是不需要按照顺序的,因为已经将变量和内容一一对应起来了。

函数返回值

def add(a,b):
c = a+b  #变量c是在函数内部显示的,外部不可见。
return c  # return是表示一个函数的执行结果
result = add(1,2) #获取add的执行结果
print(result * 4)

def add(a,b):
return a+b
print(add(1,2))

全局与局部变量

global可以在函数中使用,将全局变量的值在局部变量中修改。

Python运算符

算术运算符

运算

符号:+-*/(加减乘除),**幂运算,//整除,%取余。

print(1 +1)——2

print(3-2)——1

print(2*2)——4

print(9/3)——3.0

print(8**3)——512

print(81**(1/2)) ——9.0 记得1/2要加括号,这样才会优先计算

print(10 // 3)——3

print(10 % 3)——1

字符串运算符

运算

有限度的支持加法和乘法这两个运算,数字与字符串不能相加。

加法:将多个字符串拼接为一个字符串。

乘法:用于字符串和数字,将字符串重复多遍,次数由乘的数字决定。

赋值运算

运算

可变变量:*x,y,z = 1,2,3,4,5,6 ——>print(x,y,z)——> [1,2,3,4] 5 6

比较运算符

运算

小于(<)、大于(>)、大于等于(>=)、小于等于(<=)、不等于(!=)、等等于判断的是值(==)

字符串之间使用比较运算符,他们会对各自的字符编码进行比较。

逻辑运算符

运算

逻辑与(and):有False即False

逻辑或(or):有True即True

逻辑非(not):True——>False,False——>True

运算符优先级

运算

正常加减乘除的优先级跟数学相同。

逻辑运算的优先级:not>and>or

Python基础代码执行

分支语句

1、if...else

age = input('请输入年龄:')
nl = int(age)
if nl > 18:
print('欢迎光临,允许进入本网吧')
else:
print('未成年人禁止入本网吧')

2、if...elif...else

defen = input('请输入分数:')
df = int(defen)
if df >= 85 and df <= 100:
print('你的成绩是:A')
elif df >= 70 and df <= 84:
print('你的成绩是:B')
elif df >= 60 and df <= 69:
print('你的成绩是:C')
elif df >= 0 and df <= 59:
print('你的成绩是:E')
else:
print('请输入你正确的成绩。')

3、if语句嵌套

p = input('是否买票y/n:')
if p == 'y':
print('买了')
s = input('是否安检y/n:')
if s == 'y':
print('安检')
else:
print('无安检')
elif p == 'n':
print('没买票')
else:
print('非正确输入') #if语句里面还有if语句,就是嵌套

4、if的三元表达式

x = int(input('输入一个数字:'))
z = int(input('再输入一个数字:'))
if x > z:
y = x
else:
y = z
print('比较大的数是:',y)
#这上下两个程序最终都是相同的,上面是正常的if写法,下面是使用的三元表达式。
x = int(input('输入一个数字:'))
z = int(input('再输入一个数字:'))
y = z if x > z else x
print('比较大的数是:',y)

循环语句

for循环

for

格式:for 变量 in 可迭代对象:

可迭代对象包括:range、字符串、列表、字典、元组、集合。

range( )是python中产生一个数的集合工具,基本结构range(start,stop,step),即产生从start数开始,以step为步长,至stop数结束的数字集合,不包含stop数,start可以省略,默认为0,step也可省略,默认值为1。

range()其中(),如(1,5),那么输出的值就包含开始1但不包含结束5。

通过遍历range()产生的集合,并把集合中的每一个元素赋值给i,然后输出每一个i值,这里可以用continue和break做一个for循环测试break:直接跳出循环,不再执其后的语句以及不在进行循环;continue:跳出本次循环,不执行其后语句但继续从头执行循环;

for i in range(1,11):
print(i)

for m in [1,2,3,4,5,6,7,8,9,10]:
print(m)
#两个程序结果相同,不同的是第一个使用了range(),第二个使用了闭区间[]。而range(m,n)——>输出后的值是range(m,n-1),[]则是全部输出。
for m in 'hello':
print(m)
#并不是每次都要用range(),在遍历字符串的时候就不能使用range,会报错,只能用 for 变量 in 内容:

for 循环练习

1、案例一

求1-100的和

n = 0
for m in range(1,101):
n += m
print(n)

2、案例二

1.输入用户名和密码; ​ 2.判断用户名和密码是否正确(name='admin',passwd='kele') ​ 3.登录仅有三次机会,超过3次会报错

for denglu in range(5):
name = input('请输入用户名:')
passwd = input('请输入密码:')
if name == 'admin' and passwd == 'kele':
print('登录成功')
break
else:
print('请重新登录')
print('您的登录次数剩余%a'%(4-denglu))#%a后面的a,可以修改,a对应的是后面的(4-denglu)
else:
print('登录次数已被限制,请稍后尝试。')

3、案例三

利用for和if写cmd脚本

import os #导入os模块
for i in range(1000): #设置次数
cmd = input('cmd:') #输入命令
if cmd:
if cmd == 'exit': #当输入为exit时,直接退出break停止循环
break
else:
print('run %s' %(cmd))#%s后面的s就是(cmd)
os.system(cmd)#利用上面的导入,直接把cmd的结果输出。
else:
continue

for循环嵌套

for

for i in range(1,10):
for o in range(1,i+1):#其中i是上面i遍历出来的值,当上面i等于3时,下面的i就是(1,3),因为(1,3)只能遍历出1,2所以要加i+1,就变成了(1,4)==(1,i+1)。
print(f'{i}*{o}={i*o}', end=' ')
print()

while

格式:设定变量——while 判断语句:——print()

while死循环

1、案例一

判断数的大小

i = input('请输入分数:')
x = int(i) #将输入的str转换为int,因为str无法进行比较。
while x < 10:
print(x)
x = x + 1 #当x大于10则停止,否则一直+1
else:
print('结束')

2、案例二

while求1-100的和

i = 0 #求1——100的数的和
h = 0
while i < 100:  #当i<100的时候,执行下面的程序
i += 1  #并且每次符合条件的时候,i的值都会+1,i += 1 可以写成 i = i + 1
h = h + i #h的值每次都去加上i的新值,直到条件不再符合,同时h = h + i 可以写成h += i
print(h)

while嵌套

1、案例一

九九乘法表

n = 1
while n <=9:
m =1
while m <= n:#当m小于等于n的时候,可以正常运行下面的print,不小于的时候,直接运行n=n+1,然后赋值给第一个n=1。
print(f'{n}*{m}={n*m}', end=' ') #f是格式化输出。
m = m +1 #当运行完上面的print时,会继续运行m=m+1,如果大于n,则直接略过print,运行n=n+1。
n = n +1
print()

2、案例二

九九乘法表

i = 0
while i < 9:
i += 1
k = 0
while k < i:
k += 1
print(k,'*',i,'=',(k * i),end=' ')
print()

for与while的区别

for与while区别

for循环后面跟的是一个序列:for 变量 in range(9):

while后面跟的是一个判断条件:while n <= 9:

while与for结合使用

while与for结合

n = 1
while n <=9: #当n<=9的时候,正常进行下一步for循环,n大于则停止。
for m in range(1,n+1): #当上面符合要求,则进行遍历n的数,并且执行print
print(f'{n}*{m}={n*m}', end=' ') #当for遍历结束以后,没有其他的数了则执行下面n=n+1,回到第一个,并将n的值赋值给n=1。
n = n +1
print()

循环控制语句

break—循环控制

用来结束整个循环。

1、案例一

当条件默认为true的情况进行。

while True:
s = input('输入某个数字即可停止运行:')
d = int(s)
if d == 0:
print('恭喜你,输入正确!')
break
else:
print('你输入的不对哦!')

2、案例

判断账号密码是否正确的两种方式。

username = input('请输入账号:')
passwd = input('请输入密码:')
while username != 'zhangsan' and passwd != '123':
username = input('请输入账号:')
passwd = input('请输入密码:')
#这个程序,看似是正常运行,但是存在一种逻辑BUG,只有是True的时候,while才会运行,当username输入是zhangsan或者passwd输入是123的时候,那么while的语句中and本来就是有False即False(username != zhangsan,那么while的第一个条件是True,后一个就不会在运行,因为用的是and,自然也是True),那么输入了zhansgan或123,就正合其意,只要username和passwd有一个是False则整个while就符合条件,就会停止运行。
#解决办法可以把and换成or,因为or的逻辑运算是有True则True,当输入zhangsan时,前面的username != zhangsan,就会是True,那么后面的就不在去看了,自然也是True,即可持续运行。

while True:
username = input('请输入账号:')
passwd = input('请输入密码:')
if username == 'zhangsan' and passwd == '123':
break
#这个代码跟案例一的一样,没有任何冗余和逻辑缺陷。先说的条件就是整个输入都是True,while的条件一直满足。所以后面的if怎么样都没关系,当账号密码正确的时候,直接运行的是break,结束本轮循环。

continue—循环控制

用来结束本轮循环,开始下一轮循环。

1、案例一

v = input('请输入一个数:')
var = int(v)# 第一个实例
while var > 0:              
var = var -1
if var == 5: #输入一个大于0的数,每运行一次就减一,到5的时候,不会显示数字5,但是执行下面的continue,继续运行,直至等于0。
continue
print ('当前变量值 :' ,var)

2、案列二

for循环配合continue遍历

for letter in 'Python.':     # 第二个实例
if letter == '.': #输入python.,当letter变量等于.时,那么不显示.,直接进行continue,继续执行,直至全部显示。
continue    
print ('当前字母 :', letter)

3、案例三

死循环

i = 0
while i < 5:  #i=0输出0, 等于1则输出1,等于2则输出2,等于3的时,满足if条件,返回while语句那行,继续执行i=3,陷入死循环。
if i == 3: #如果 i=3,那么就结束本轮循环,开始新的循环
continue
print(i)
i += 1
#如果把1 += 1放到if语句的上面,那么死循环就被破开,结果就不是只打印012,而是打印0,1,2,4没有3,因为i等于3的时候,重新循环。

文件操作

读取文件

读取文件用到的参数:

同级目录、打开文件open()、读取文件read()、关闭文件close()

d = open('ddd.txt',encoding='utf-8')  #首先创建一个变量接收open()打开的文件ddd.txt,采用的编码是ust-8。
s = d.read() #新建一个变量用来读取d变量接收的文件内容。
print(s)   #输出s变量读取的内容。
d.close()   #输出后将接收的文件关闭。

写入文件

f = open('test.txt',mode='w',encoding='utf-8') #首先创建变量,open打开一个文件,mode是模式,w是write写入的意思,编码是utf-8。
f.write('张三\n李四\n王五')#写入名字并换行。
f.close() #关闭文件

文件写入注意事项

文件写入的时候,如果mode用的方法是w,那么后面重新写入且运行的内容会把之前的内容覆盖掉,如果不想被覆盖,可以把mode方法换成a——mode='a'即可。

'r':读, 'w':写 ,'a':追加, 'r+' == r+w(可读可写,文件若不存在就报错(IOError)), 'w+' == w+r(可读可写,文件若不存在就创建), 'a+' == a+r(可追加可写,文件若不存在就创建) 对应的,如果是二进制文件,就都加一个b就好: 'rb'  'wb'  'ab'  'rb+'  'wb+'  'ab+'

# python # python编程 # Python基础
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录