昨日内容
* 字典
len() d[key] d.get[key] d[key]=value
d.pop(key) keys() values() items()
* 元组
len() 索引切片
* 集合
去重 关系运算
1.计算机存储数据的本质
2.字符编码概念
人类字符与数字对应关系
3.字符编码发展史
4.字符编码应用
要想文件不乱码 以什么编码村就以什么编码解
编码与解码 encode() decode()
* 文件:操作系统暴露给用户操作硬盘的快捷方式
* 文件处理的代码
with open(文件路径,模式,编码) as 变量名:
子代码块
* 文件路径:绝对路径与相对路径
* 转义 r
* 读写模式
r(rt)
w(wt)
a(at)
* 操作模式
r
t
username=input("username>>>").strip()
password=input("password>>>").strip()
with open(r'userinfo.txt','a',encoding='utf8') as f:
f.write("%s|%s"%(username,password))
username=input("username>>>").strip()
password=input("password>>>").strip()
with open(r'userinfo.txt','r',encoding='utf8') as f:
data=f.read()
real_name,real_pwd=data.split('|')
if username==real_name and password ==real_pwd:
print("登陆成功")
else:
print("用户名或密码错误")
""""""""""""""""""扩展"""""""""""""""""""
with open(r'a.txt','r',encoding='utf8') as f:
data=f.read()
for line in f:
print(line)
username=input("username>>>").strip()
password=input("password>>>").strip()
flag=True
with open(r'userinfo.txt','r',encoding='utf8') as f:
for line in f:
real_name=line.split('|')[0]
if username==real_name:
print("用户名已存在")
flag=False
break
if flag:
with open(r'userinfo.txt','a',encoding='utf8') as f:
f.write("%s|%s\n"%(username,password))
print("注册成功")
username=input("username>>>").strip()
password=input("password>>>").strip()
with open(r'userinfo.txt','r',encoding='utf8') as f:
for line in f:
real_name,real_pwd=line.split('|')
if username==real_name and password==real_pwd.strip('|'):
print('登陆成功')
break
else:
print('用户名或密码错误')
今日内容
1.文件操作补充
with open(r'userinfo.txt','r',encoding='utf8') as f:
print(f.read())
print(f.read())
seek(位移,模式)
0 基于文件开头
1 基于当前位置
2 基于文件末尾
f.flush()
f.readable()
f.writeable()
2.函数
1.定义
函数类似于某种工具,提前定义好之后,后续可以反复使用,从而避免重复劳动
def get_info():
username=input("username>>>").strip()
password=input("username>>>").strip()
get_info()
2.函数语法结构
def 函数名(参数1,参数2,……):
"""函数的注释"""
函数体代码
return 返回值
"""
注意:
1.函数在定义阶段只识别语法,不执行代码
2.函数在调用阶段才会执行函数体代码
函数名加括号(如果有参数还需要额外的传入参数)
3.函数必须先定义后调用
"""
3.函数的种类
* 无参函数 定义和调用时不含参数
def index():
print('hello world')
* 有参函数
def my_max(x,y):
if x>y:
print(x)
else:
print(y)
* 空函数 有助于组织逻辑架构
def run():
pass
def fight():
pass
del study():
pass
4.补充
* 三元表达式
res=666 if 1>2 else 4
print(res)
* 列表生成式
new_list=["jason","kevin","tom","jack"] 将所有人名后面加上一个NB
new_list=[]
for name in name_list:
new_list.append(name+"NB")
print(new_list)
new_list=[name+"NB" for name in name_list]
print(new_list)
new_list=[name+"DSB" for name in name_list if name!="jason"]
print(new_list)
5.函数的返回值
如何获取函数的返回值 用变量接收即可
变量名=函数名叫括号调用
"""
1.没有关键字return 默认都是返回None
2.写了return return后面写什么就返回什么
如果一次性返回多个元素,那么会自动组织成元组返回
3.return额外的功能
函数体代码只要遇到return就会立刻结束整个函数的运行
"""
6.函数的参数
函数在定义阶段括号内写的都叫函数的形式参数,简称:形参
函数在调用阶段括号内传入的叫做函数的实际函数,简称:实参
函数的形参类似于变量名,函数的实参则类似于变量值
两者在函数调用的时候才会绑定关系,函数运行结束自动结束绑定
def index(x,y):
print(x,y)
index(1,2)
在调用的时候会将1绑定给x,2绑定给y
参数种类
* 位置参数
按照位置顺序逐一传值,参数个数必须相同
def index(a,b):
print(a,b)
index(1,2)
* 关键字参数
指名道姓的给指定的形参传值(打破位置顺序)
index(b=5,a=9)
* 默认参数
如果不给参数赋值则使用默认参数,也可以重新赋值
def register(name,age,gender="male")
print(name,age,gender)
register("jason",18)
register("lucy",23,"female")
* 可变长参数
def func(a,*b):
print(a,b)
func(1)
func(1,2,3,4)
def login(a,**b):
print(a,b)
login(a=1)
login(a=1,b=2,c=3)
def my_func(*a,**b):
print(a,b)
my_func()
my_func(1,2,3,4,5)
my_func(a=1,b=2,c=3)
my_func(1,2,3,4,a=1,b=2,c=3)
"""
针对可变长形参变量名,习惯使用args kwargs
def MyFunc(*args,**kwargs):
pass
"""
3.面向对象(了解基本概念)
对象:就是数据与功能的结合体
类:多个对象系统数据和功能的结合体
程序中要先有类,才能产生对象
class Student:
school='清华大学'
def __init__(self,name,age,gender):
self.name=name
self.age=age
self.gender=gender
def choice_course(self):
print("%s正在选课"%self.name)
obj=Student()
obj.school
obj.choice_course()
obj1=Student('jason',19,'male')
obj2=Student('kevin',29,'female')
obj3=Student('jack',39,'male')
"""
在类中定义的函数,默认必须有一个形参self
并且在对象调用该函数的时候不需要传,默认自动将对象当作第一个参数传入
"""
4.模块
写好的功能,直接使用即可
使用模块前必须先倒入模块
import 模块名
from 模块名 import 子模块名1,子模块名2……
* datatime
* time
time.time()
time.sleep()
time.strftime("%Y-%m-%d %H:%M:%S")
time.strftime("%Y-%m-%d %X")
* os模块
os.path.join()
模块种类
1.内置模块
python解释器已经下载好,直接导入使用即可
2.第三方模块
别人写的模块,要想使用必须先基于网络下载,之后才能导入使用
"""**如何下载模块**
pip3是专门用来下载第三方模块的工具
方式1 命令行模式
pip3 install 模块名
pip3 install 模块名==版本号 #下载指定版本
当下载模块的时候报错可能的原因有
1.pip版本过低,需要先更新
python3-m pip install --upgrade pip
2.网络不稳定
timeout 换一个稳定的网络再次执行命令下载
3.当前模块需要提前做相应的环境配置
具体结合实际情况分析(百度搜索)
#方式2 pycharm快捷方式
file > settings > project interpreter > 点击加号或者双击任意模块名 > 输入模块名 > 右下角勾选选择版本下载
pip3下载第三方模块的时候默认是从国外的仓库下载,速度很慢
可以切换仓库地址
1.百度搜索pip源
2.拷贝地址
pip3 install 模块名 -i 国内源地址
3.pycharm配置仓库地址
![仓库配置操作](https://img-blog.csdnimg.cn/20210416162827567.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29hX3NfaV9z,size_16,color_FFFFFF,t_70#pic_center)
"""
作业
1.消化吸收今日内容
2.将今日登陆注册的作业改成函数版本
3.看一看模块相关的博客文章
4.总结本周所学的内容