Python基础

admin 2022年6月1日15:06:06安全开发评论3 views10076字阅读33分35秒阅读模式

导入模块

简介

在 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 = 0while n <= 100:    s += n #正常写法,s+=n的意思是,用n的值+s的值,刚开始s是0,当n等于1时,s+=n后s变成1,然后执行n+=1来获取新的n的值,再去循环至n<=100。    n += 1print(s)
#案例二def qiu_he(n,m): #define是函数的关键词,后面跟的是函数名,qiu_he的括号里面是函数的参数,下一行是函数体。 s = 0 while n <= m: #函数体 s += n n += 1 return sprint(qiu_he(1,100))
#案例三def area(width, height): return width * heightd = 5e = 8print(area(d,e))
#案例四def printinfo(name, age): "打印任何传入的字符串" print("名字: ", name) print("年龄: ", age) return# 调用printinfo函数age = 50name = '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+bprint(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 = xelse:     y = zprint('比较大的数是:',y)#这上下两个程序最终都是相同的,上面是正常的if写法,下面是使用的三元表达式。x = int(input('输入一个数字:'))z = int(input('再输入一个数字:'))y = z if x > z else xprint('比较大的数是:',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 = 0for m in range(1,101):     n += mprint(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则停止,否则一直+1else:    print('结束')

2、案例二

while求1-100的和

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

while嵌套

1、案例一

九九乘法表

n = 1while 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 = 0while 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 = 1while 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 = 0while 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基础

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月1日15:06:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  Python基础 http://cn-sec.com/archives/1075044.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: