python基本理论知识
安装。常规方法:官网下载,依据官方手册进行安装。非常规方法:第三方工具,PyCharm,Spyder等。
1、python的3.0版本,常被称为python3000,或简称py3k.;python3.0在设计的时候没有考虑向下兼容。
2、python 3.0 区分大小写,且首字段无空格、制表符。
3、python中’和”使用方法完全一致。
4、注释:单行注释:#;多行注释:”’三个单引”’或者”””三个双引”””。
5、编码: 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。
6、同一个代码块的行缩进必须一致,否则报错,不同的代码块缩进的空格数可以不一致
7、一条长语句,分多行编写,则需在上一行的结尾增加 \ 实现
另:在{},[],()之间的多行,则不需要\
8、多条语句,同时编辑在同一行,则语句之间通过 ; 区分
9、空行:为增强脚本阅读性,建议在代码块,函数以及类等之间,插入空行,空行不执行
10、变量,python中变量无需声明,赋值即创建变量,变量=值,而且变量没有数据类型之说,只能说是变量指向的内存中的对象的数据类型。变量命名:一般采取 变量意义_数据类型,如:count_number,计数.
11、每个对象都有唯一标识符,而python用对象的内存地址作为唯一标识符。可变,不可变,指的是一个对象(标识符)的值可不可变,反之,如果值变了,标识符是否变了。
12.以”#”开头的是注释,可以独占一行,以三对双引号或单引号包裹的语句是多行注释
13.缩进可以用tab键控制,也可以用空格。空格是Python3的缩进方法,一般使用四个表示一级缩进,Python不允许tab和空格混用。
14.关键字是Python已经使用过的不能再使用,可以在Jupyter单元格中执行help(“关键字”)查看有哪些关键字,也可以修改大小写来使用已使用的关键字。
15.数据类型分为整形(int),浮点型(float),布尔类型(bool),复数类型(complex),字符串,列表,元祖,字典。
16.列表用[]中间用逗号隔开,元祖用()中间用逗号隔开,集合用{},其中元素无序且唯一,字典中的元素是”键(Key):值(Value)”,键不能重复,各个元素用逗号隔开
17.input()函数用于接收用户键盘输入的数据,print()函数向控制台输出数据
———————————————
数据类型
1、number,数字数据类型,不可变类型,即改变数字数据类型的值,将重新分配内存地址。数字数据类型包括:int,float,complex。
2、string:字符串数据类型,不可变类型,用’或者”创建。可以被索引,截取。
3、list:列表数据类型,可变类型,写在[ ]里,用”,”隔开,其元素类型可以不相同,可以是数字,字符串,列表(嵌套)。 和字符串一样,可以被索引和截取,但截取时可以输入第三个参数,步长。是python中使用最频繁的数据类型。
4、tuple:元组数据类型,不可变类型,写在( )里,以“,”隔开,其元素可以是不同数据类型,其中可以包括可变数据类型list。可以被索引,截取。特殊语法:只有一个元素:touple1(value1,),有0个元素:tuple1( )。注:tuple属于不可变序列,故代码更安全。但,tuple的元素可以是可变类型数据类型list,list可变,但tuple不可变,也没变,还是依然指向该list的内存地址,故没变。
5、dictionary:字典数据类型,可变数据类型,用{ }创建,其中元素以key:value形式存放,各元素以“,”隔开,其中key值必须为不可变数据类型(number,string,tuple),且唯一(在同一个dictionary中),value可以为任意数据类型。dictionary是一种无序的集合,通过key值存取,而不是位置。dictionary是另一种使用广泛的数据类型(序列)。特殊语法:{ },表示空字典。
6、set:集合数据类型,可变类型,set( )或者{ }创建。 空集合:只能用set( ),不能用{ },{ }表示空字典。集合无序,无重复元素序列,多半用来做成员测试。
课堂例题
例题
danhao = ‘植树证书’
time = ‘时间:2021’
name = ‘谢谢你’
yi = ‘你于2021年12月16日申请的梭梭树已经被中国扶贫基金会认领,将种植到武危地区’
er = ‘树苗编号’ \
‘NO.HFK121212456485231’
print(‘*’*30)
print(danhao)
print(time)
print(‘*’*30)
print(name)
print(yi)
print(er)
————————————————
流程控制
掌握if语句的多种格式跳转语句,掌握while循环for循环,熟悉for循环和while循环嵌套,熟悉if语句的嵌套.
if-else
if-elif-else
if总结
if嵌套
if判断条件1:
代码段1
if判断条件2:
代码块2
猜数字例题
a1=1 #一个人设定数字 a=int(input("请输入数字"))#第二个猜测数字 if a1>a: print("你猜小了") elif a1<a: print("你猜大了") else: print("你猜对了")
while语句
while 条件表达式:
代码块
for语句 临时变量 in 目标对象
代码块
逢7拍手例题
sum=0 for i in range(1,100): if '7' not in str(i): if i%7 : print(i)
break语句 用于结束循环
continue语句用于满足条件下跳出本次循环
房贷计算器例题
years = int(input(“请输入贷款期限(年):”))
if years > 5:
print(“请输入贷款类型:1商业贷款,2公积金贷款”)
choic = int(input(“请输入贷款类型:”))
if choic == 1:
r = 4.90 / 100
elif choic == 2:
r = 3.25 / 100
elif 0 < years <= 5:
print(“请输入贷款类型:1商业贷款,2公积金贷款”)
choic = int(input(“请输入贷款类型:”))
if choic == 1:
r = 4.75 / 100
elif choic == 2:
r = 2.75 / 100
else:
print(‘输入错误’)
mr = r / 12 # 月利率
m = 12 * years # 贷款总月数
p = int(input(‘请输入贷款本金:’)) # 贷款本金
mrp = mr * p # 月利息
m1 = p * mr * pow(1 + mr, m) / (pow((1 + mr), m) – 1) # 每月月供参考
m2 = m1 * years * 12 # 还款总额
li = m2 – p
print(‘您的每月月供参考为:’, m1)
print(‘您的还款总额为:’, m2)
print(‘您需还的利息为:’, li)
————————————————
字符串
什么是字符串???
字符串是一种用来表示文本的数据类型,它是由符号或者数值组成的一个连续序列。
Python支持使用单引号、双引号和三引号定义字符串,其中单引号和双引号通常用于定义单行字符串,三引号通常用于定义多行字符串。
使用单引号:’hello itcast’
使用双引号:”hello itcast”
使用三引号:””my name is itcast my name is itcast”””
Python使用反斜杠“\”转义。例如,在字符串中的引号前添加“\”,此时Python解释器会将“\”之后的引号视为解释为一个普通字符,而非特殊符号。
化字符串是指将指定的字符串转换为想要的格式。Python字符串可通过%格式符格式化输出。
format % values
虽然使用%可以对字符串进行格式化,但是这种方式并不是很直观,一旦开发人员遗漏了替换数据或选择了不匹配的格式符,就会导致字符串格式化失败。为了能更直观、便捷地格式化字符串,Python为字符串提供了一个格式化方法format()。
f-string提供了一种更为简洁的格式化字符串的方式,它在形式上以f或F引领字符串,在字符串中使用“{变量名}”标明被替换的真实数据和其所在位置。
f(‘{变量名}’) 或F(‘{变量名}’)
十进制是实际应用中最常使用的计数方式,除此之外,还可以采用二进制、八进制或十六进制计数。 本实例要求编写代码,实现将用户输入的十进制整数转换为指定进制的功能。
字符串的查找与替换
Python中提供了实现字符串查找操作的find()方法,该方法可查找字符串中是否包含子串,若包含则返回子串首次出现的位置,否则返回-1。
Python中提供了实现字符串替换操作的replace()方法,该方法可将当前字符串中的指定子串替换成新的子串,并返回替换后的新字符串。
split()方法可以按照指定分隔符对字符串进行分割,该方法会返回由分割后的子串组成的列表。、
join()方法使用指定的字符连接字符串并生成一个新的字符串。
删除字符串的指定字符
字符串中可能会包含一些无用的字符(如空格),在处理字符串之前往往需要先删除这些无用的字符。Python中的strip()、lstrip()和rstrip()方法可以删除字符串中的指定字符。
字符串对齐
在使用Word处理文档时可能需要对文档的格式进行调整,如标题居中显示、左对齐、右对齐等。Python提供了center()、ljust()、rjust()这3个方法来设置字符串的对齐方式。
过滤敏感词
敏感词通常是指带有敏感政治倾向、暴力倾向、不健康色彩的词或不文明的词语,对于文章中出现的敏感词常用的处理方法是使用特殊符号(如“*”)对敏感词进行替换。 本实例要求编写代码,实现具有过滤敏感词功能的程序。
文字排版工具
文字排版工具是一款强大的文章自动排版工具,它会将文字按现代汉语习惯及发表出版要求进行规范编排。文字排版工具一般具备删除空格、英文标点替换、英文单词大写功能, 本实例要求编写代码,实现具有上述功能的文字排版工具。
例题:文本进度条.
import time
scale = 50
print(“执行开始”.center(scale // 2,”-“))
start = time.perf_counter()
for i in range(scale + 1):
a = “*” * i
b = “.” * (scale – i)
c = (i / scale) * 100
dur = time.perf_counter() – start
print(“\r{:^3.0f}%[{}->{}]{:.2f}s”.format(c,a,b,dur),end = “”)
time.sleep(0.1)
print(“\n”+”执行结束”.center(scale // 2,”-“))
————————————————
组合数据类型
Python集合具备确定性.互异性和无序性
字典(dict)是Python唯一的内置映射类型
字典的每个键只能对应一个值,不允许出现同一个键
字典的键是不可变类型
可以通过update()添加元素:dict.update(key=value),
列表可以用[]或list()创建,可以通过引索或切片访问列表
可通过append(),extend()和insert()添加元素
可通过del语句,remove(),pop()和clear()方法删除列表元素
可以用a1=()或a1=tuple()创建元组
集合
使用{}不能创建空集,空集只能用set()
————————————————
函数
1.定义函数
例如定义计算两个数之和的函数
def add()
result = 11+22
print(result)
2.调用函数
函数在定义完成后不会立刻执行,直到被程序调用时才会执行
add()
add_modify(10,20)
3.函数的传递
有关键字传递,位置传递
位置传递例:
def get_max(a, b):
if a > b:
print(a,”是较大的值!”)
else:
print(b,”是较大的值!”)
get_max(8, 5)
关键字传递例:
def connect(ip, port):
print(f”设备{ip}:{port}连接!”)
connect(ip=”127.0.0.1″, port=8080)
————————————————
文件与数据格式化
文件标识的意义:找到计算机中唯一确定的文件。
文件标识的组成:文件路径、文件名主干、文件扩展名
计算机中的文件分为文本文件和二进制文件
文本文件:专门存储文本字符数据
二进制文件:需要电脑进行规则翻译的文件
stdin(标准输入文件) stdout(标准输出文件) stderr(标准错误文件)
内置函数open()用于打开文件
open(file, mode=’r’, buffering=-1)
while语句
with语句可预定义清理操作,以实现文件的自动关闭
read方法可以从指定文件中读取指定字节 格式:read(n=-1)
readline()方法可以从指定文件中读取一行数据
readlines()方法可以从指定文件读取所有数据
write()方法可以写入文件
writelines()可以把列表写入文件
tell方法用于获取文件当前读写位置
seek()方法可以控制文件的读写位置,实现位置的随机读写
文件与目录管理
删除文件os.remove(文件名)
文件重命名os.rename(原文件名,新文件名)
创建/删除目录os.mkdir(目录名)/os.rmdir(目录名)
获取当前目录os.getcwd()
更改默认目录os.chdir(路径名)
获取目录列表os.listdir(目录/路径)
————————————————
例题
写一个修改文件的程序,要求是原来的内容不能被覆盖,修改之后字符之间的空格不能变化
user.txt ↓
马一特 18 male
刘德华 50 male
林志玲 20 female
代码↓
with open(‘user.txt’, mode=’wr’, encoding=’utf-8′) as f:
data = f.read()
data = data.replace(‘马一特’, ‘马一特[Albert]’)
with open(‘user.txt’, mode=’w’, encoding=’utf-8′) as f:
f.write(data)
————————————————
例题
生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
01-AF-3B
01-AF-3B-xx
01-AF-3B-xx-xx
01-AF-3B-xx-xx-xx
代码↓
def create_mac():
MAC = ’01-AF-3B’
hex_num = string.hexdigits
for i in range(3):
n = random.sample(hex_num,2)
sn = ‘-‘ + ”.join(n).upper()
MAC += sn
return MAC
print(create_mac())
#随机生成100个MAC 地址
def main():
with open(‘mac.txt’,’w’) as f:
for i in range(100):
mac = create_mac()
print(mac)
#每生成一个MAC地址,存入文件
f.write(mac + ‘\n’)
main()
————————————————
例题
当前目录下有一个文件名为 a.txt 的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。
请根据平时成绩占 40%,期末成绩占 60%的比例计算总评成绩(取整数) ,并分学号、总评成绩两列写入另一文件 score2.txt 。
同时在屏幕上输出学生总人数, 按总评成绩计 90 以上、80~89、70~79、60~69、60 分以下各成绩档的人数 和班级总平均分(取整数)
————————————————
a.txt:学号 平时成绩 期末成绩
170691501 90 91
170691502 60 70
170691503 85 60
170691504 80 75
170691505 95 60
170691506 95 100
170691507 60 40
代码↓
f = open(“a.txt”)
a = f.readline()
line = (f.readline()).strip()
f2 = open(“a.txt”,’w’)
f2.write(“学号 平均成绩\n”)
L2 = [0,0,0,0,0]
count = 0
sum = 0
while (len(line) != 0):
L1 = line.split()
f2.write(L1[0]+” “)
f_score = int(int(L1[1])*0.4+int(L1[2])*0.6)
if 90<f_score <=100:
L2[0] += 1
elif f_score >=80:
L2[1] += 1
elif f_score >=70:
L2[2] += 1
elif f_score >=60:
L2[3] += 1
else :
L2[4] += 1
count += 1
sum += f_score
f2.write(str(f_score)+”\n”)
line = (f.readline().strip())
f.close()
f2.close()
avg_score = int(sum/count)
print(“学生总人数为{0},按总评成绩计,90以上{1}人,80-90有{2}人,70-80有{3}人,60-70有{4}人,60以下有{5}人,班级总平均分为{6}”.format(count,L2[0],L2[1],L2[2],L2[3],L2[4],avg_score))
————————————————