2019.6.13
昨日作业
‘’’
1、 让用户输入用户名与密码
2、 校验用户名是否存在
3、 用户名存在后校验密码是否正确,若正确打印“登陆成功”,否则打印“用户名或密码错误”,并让用户重新输入
4、 用户密码输入错误超过三次则退出循环
‘’’
#import os #与操作系统进行交互 def login(): number = 0 # 打开文件读取用户信息 with open('user.txt', 'r', encoding='utf-8') as f: res = f.read() print(res) # 普通赋值 # list1 = res.split(':') # username = list1[0] # password = list1[1] # print(username, password) # 解压赋值 username, password = res.split(':') flag = True while flag: # 让用户输入用户名 user = input('请输入用户名:').strip() # 判断用户名是否存在 if username == user: # 如果number==3,则表示输入密码错误超过或等于三次 if number == 3: break while number < 3: # 让用户输入密码 pwd = input('请输入密码:').strip() # 判断密码是否正确 if password == pwd: print('登录成功!') # 登录成功后,修改flag为False,退出所有循环 flag = False break else: print('登录失败!') # 密码输入错误,则number +1,循环次数 -1 number += 1 else: print('用户名不存在,请重新输入!') login()
今日内容:
1、函数剩余部分
2、内置模块
3、模块与包
4、爬虫基本原理
5、requests模块
一、函数剩余部分
''' 函数的返回值 在调用函数时,需要接受函数内部产生的结果,则return返回值 ''' def max2(x,y): if x>y: return x else: return y res=max2(10,5) print(res) ''' 函数对象 指的是函数名指向的内存地址 ''' def func(): pass #print(func) # #func() def func2(): pass #把函数对象传入字典中 dict1={ '1':func, '2':func2 } choice=input('请输入功能编号:').strip() #if choice=='1': # func() #elif choice=='2': # func2() # #若用户选择函数对象对应的key值,则调用该函数 if choice in dict1: dict1[choice]() #dict1['1'] ''' 函数嵌套: 嵌套定义: 在函数内,定义函数 嵌套调用: ''' #函数嵌套定义 def func1(): print('func1...') def func2(): print('func2...') def func3(): print('func3...') #... return func3 return func2 #通过函数内部的函数值,调用函数 func2=func1() func3=func2() func3() #函数嵌套调用 def func1(): print('func1...') def func2(): print('func2...') def func3(): print('func3...') #... func3() func2() func1()
''' 名称空间 Python解释器自带的:内置名称空间 自定义的py文件内,顶着最左边定义的:全局名称空间 函数内部定义的:局部名称空间 ''' #name=’tank’ def func1(): #name=’tank’ print() def func2(): print(‘func2...’) #print(name,’全局打印’) func1()
#函数的三种定义方式 #无参函数 #不需要接收外部传入的参数 def foo(): print('from foo..') foo() #有参函数 #需要接收外部传入的参数 def login(user, pwd): print(user, pwd) # ##传参多一或少一不可 login('tank', '123') #login('tank', '123', 111) # 多,报错 #login('tank') # 少,报错 #x = 10 #y = 20 # #if x > y: # # print(x) # #else: # print(y) #比较两数大小 def max2(x, y): if x > y: print(x) else: print(y) max2(10, 30) #空函数 #遇到一些比较难实现的功能,会导致暂时无法继续编写代码。 #所以一般在生产开发中,都会将所有功能实现定义成空函数。 def func(): pass # pass代表什么都不做
二、模块与包
#import 模块名 import B #from #导入B模块中的a文件 #会自动执行a 文件中的代码 from B import a #__name__:B.a #a #print('from a') def func1(): print('from func1') print(__name__) #__main__ #用于测试函数 if _name_=='_main_': func1() #func1()
三、内置模块
''' 常用模块(内置模块) time os json sys ''' #time import time #导入time模块 #获取时间戳 print(time.time()) #等待2秒 time.sleep(2) print(time.time()) #os import os #与操作系统中的文件进行交互 #判断tank.txt文件是否存在 print(os.path.exists('tank.txt')) #True print(os.path.exists('tank1.txt')) #False #获取当前文件的根目录 print(os.path.dirname(__file__)) #sys import sys #获取python在环境变量中的文件路径 print(sys.path) #把项目的根目录添加到环境变量中 sys.path.append(os.path.dirname(__file__)) print(sys.path) #json import json user_info={ 'name':'tank', 'pwd':'123' } #dump:序列化 #1、把字典转化成json数据 #2、再把json数据转化成字符串 res=json.dump(user_info) print(res) print(type(res)) with open('user.json','wt',encoding='utf-8')as f: f.write(res) #loads:反序列化 #json.loads() #1、把json文件的数据读到内存中 with open('user.json','r',encoding='utf-8')as f: res=f.read() #print(type(res)) user_dict=json.loads(res) print(user_dict) #{'name':'tank','pwd:'123'} print(type(user_dict)) #<class 'dict'> #dump user_info={'name':'tank', 'pwd':'123' } with open('user_info.json','w',encoding='utf-8')as f: #str1=json.dumps(user_info) #f.write(str1) #dump:自带write功能 json.dump(user_info,f) #load with open('user_info.json','r',encoding='utf-8')as f: res=f.read() user_dict=json.load(res) print(user_dict) #load:自动触发f.read() user_dict=json.load(f) print(user_dict)
四、爬虫基本原理
http协议: 请求url: http://www.baidu.com 请求方式: GET 请求头: Cookie:可能需要关注 User-Agent:用来证明你是浏览器 Mozilla/5.0(Windows NT 10.0;WOW64) Host:www.baidu.com ''' #requests模块使用 import requests #pip3 install requests #pip3 install -i 清华源地址 模块名 #pip3 install -i https://pypi.tsinghua.edu.cn/simple requests import requests reponse=requests.get(url='https://www.baidu.com/') reponse.encoding='utf-8' print(response) #<Response [200]> #返回响应状态码 print(response.status_code) #200 #返回响应文本 #print(response.text) print(type(response.text)) #<class 'str'> with open('baidu.html','w',encoding='utf-8')as f: f.write(response.text) #爬取梨视频 import requests request.get('视频链接') print(res.content) #打印视频的二进制流 with open('视频.mp4','wb')as f: f.write(es.content)
五、requests模块
#requests模块使用 import requests #pip3 install requests #pip3 install -i 清华源地址 模块名 #pip3 install -i https://pypi.tsinghua.edu.cn/simple requests import requests reponse=requests.get(url='https://www.baidu.com/') reponse.encoding='utf-8' print(response) #<Response [200]> #返回响应状态码 print(response.status_code) #200 #返回响应文本 #print(response.text) print(type(response.text)) #<class 'str'> with open('baidu.html','w',encoding='utf-8')as f: f.write(response.text) #爬取梨视频 import requests request.get('视频链接') print(res.content) #打印视频的二进制流 with open('视频.mp4','wb')as f: f.write(es.content)