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()
View Code

 

今日内容:

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()
View Code

 

 

'''
名称空间
Python解释器自带的:内置名称空间
自定义的py文件内,顶着最左边定义的:全局名称空间
函数内部定义的:局部名称空间
'''
#name=’tank’
def func1():
#name=’tank’
print()
def func2():
    print(‘func2...’)

#print(name,’全局打印’)

func1()
View Code
#函数的三种定义方式
#无参函数
#不需要接收外部传入的参数
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代表什么都不做
View Code

 

二、模块与包

#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()
View Code

 

 

三、内置模块

'''
常用模块(内置模块)
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)
View Code

 

四、爬虫基本原理

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)
View Code

 

 

五、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)
View Code

 

 

posted @ 2019-06-13 16:26  鸡肉串  阅读(172)  评论(0编辑  收藏  举报