day17课程内容:

  装饰器回顾练习 登录功能:

#登录京东,不同的页面,选择页面,然后不同的登录方式

with open('作业5.1jingdong','w',encoding='utf8') as f1,open('作业5.2weixin','w',encoding='utf8') as f2:
jingdong={'username':'张三','pwd':'1234'}
weixin={'username':'张三微信','pwd':'4321'}
f1.write(str(jingdong))
f2.write(str(weixin))

# with open('作业5.1jingdong','w',encoding='utf8') as f1,
# open('作业5.2weixin','w',encoding='utf8') as f2:

def login(logintype='',flag=False):
def logged(f):
def hadlog(*x,**y):
f(*x,**y)
return hadlog
def choice(f):
def jd(*x,**y):
with open('作业5.1jingdong', 'r', encoding='utf8') as f1:
dic = eval(f1.read())
username = dic['username']
pwd = dic['pwd']
while True:
useid = input('请输入用户名:')
usepwd = input('请输入密码:')
if useid == username and usepwd == pwd:
print('通过京东账号登录成功!')
break
else:
print('用户名或密码错误,登陆失败!')
flag = True
f(*x,**y)
def wx(*x,**y):
with open('作业5.2weixin', 'r', encoding='utf8') as f1:
dic = eval(f1.read())
username = dic['username']
pwd = dic['pwd']
while True:
useid = input('请输入用户名:')
usepwd = input('请输入密码:')
if useid == username and usepwd == pwd:
print('通过微信登录成功!')
break
else:
print('用户名或密码错误,登陆失败!')
f(*x,**y)
flag=True
if logintype=='jd':
return jd
elif logintype=='wx':
return wx
else:
pass #可增加其他登录方式
if flag==True:
return logged
if flag==False:
return choice

@login('jd')
def home():
print('欢迎进入首页!')

@login('wx')
def finance():
print('欢迎来到财经页面')

@login('',True)
def book():
print('欢迎来到图书页面!')

home()
finance()
book()
# 请输入用户名:张三
# 请输入密码:1234
# 通过京东账号登录成功!
# 欢迎进入首页!
# 请输入用户名:张三微信
# 请输入密码:4321
# 通过微信登录成功!
# 欢迎来到财经页面
# 欢迎来到图书页面!

  生成器

def f(n):
return n*3
a=[f(x) for x in range(10)] #列表生成式
print(a) #[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

a=(x*3 for x in range(5))
#print(a) #<generator object <genexpr> at 0x0000000002125888> 生成器对象
#for i in range(5):print(a.__next__()) #调用内部方法的方式不提倡
print(next(a)) #next(a)等价于 a.__next__() ,在py2里等价于 a.next()
#######生成器就是一个可迭代对象
for i in a:
print(i) #迭代出来了

# 生成器有两种创建方式:
# 1、a=(x*3 for x in range(5))
#
# 2、yield:
def f():
print('ok1')
yield 1
print('ok2')
yield 2
a=f()
# next(a)
# next(a)
for i in a:
print(i)
# ok1
# 1
# ok2
# 2

def f():
print('ok111')
count=yield 1
print(count)
yield 2

a=f()
b1=a.send(None) #等价于next(a)
b2=a.send('传值')
print(b1,b2)
# ok111
# 传值
# 1 2

############生成器都是迭代器,迭代器不一定是生成器
#list tuple dict,string:Interable(可迭代对象)

#什么是迭代器?

#满足两个条件:1、有iter方法 2、有next方法 迭代协议

  模块

import time
#print(time.time())
#time.sleep(1)
#print(time.gmtime())#英国世界标准时间 结构化格式 time.struct_time(tm_year=2017, tm_mon=11, tm_mday=29, tm_hour=7, tm_min=26, tm_sec=5, tm_wday=2, tm_yday=333, tm_isdst=0)
print(time.ctime(time.time())) #将时间戳转为 格式输出
print(time.localtime())#当地时间 结构化格式time.struct_time(tm_year=2017, tm_mon=11, tm_mday=29, tm_hour=15, tm_min=31, tm_sec=41, tm_wday=2, tm_yday=333, tm_isdst=0)
print(time.mktime(time.localtime())) #将结构化格式时间转化为时间戳
import datetime
print(datetime.datetime.now()) # 2017-11-29 15:34:54.708226 ####很实用!
import random
print(random.random()) #生成0到1 的一个随机数 0.876389575379323
print(random.randint(1,10)) #生成1到10的随机整数 包括1和10
print(random.choice('hello'))#随机选取一个元素输出
print(random.randrange(1,10))#生成1到10随机整数 包括1 不包括10 更加常用!

###########生成验证码
#chr(65) ascii()码转化
import random
def f(a=5):
cod=''
for i in range(a):
b = random.random()
if b<0.5:
cod+=str(random.randrange(1,10))
else:
cod+=chr(random.randrange(65,91))
return cod

print(f(6))

老男孩Python全栈开发(92天全)视频教程 自学笔记17的更多相关文章

  1. 老男孩Python全栈开发(92天全)视频教程 自学笔记02

    day2课程目录: 操作系统的历史 二进制运算 字符编码与计算机容量 编程语言介绍 开发语言分类 演讲能力锻炼 day2课程内容梳理: 操作系统发展史: Unix系统 极其稳定 现在很多银行还在用 L ...

  2. 老男孩Python全栈开发(92天全)视频教程 自学笔记03

    day3课程目录: pyhton的历史 32bit和64bit系统的区别 Python版本的选择 第一个pyhton程序 文件后缀名及系统环境变量的介绍 pyhton程序的执行和其他编程语言的简单对比 ...

  3. 老男孩Python全栈开发(92天全)视频教程 自学笔记01

    day1课程目录: 开课介绍(1) 开课介绍(2) 开课介绍(3) 电脑简史(1) 电脑简史(2) 计算机结构 day1课程内容梳理: 导师介绍: Alex Li(金角大王):买了一辆特斯拉,喜欢姑娘 ...

  4. 老男孩Python全栈开发(92天全)视频教程 自学笔记09

    day9课程内容: 乌班图(ubuntu)64位系统 和 VMware 虚拟机安装(官网收费又麻烦,在网上找资源 安装vmware: vm运行(秘钥找度娘)--文件--新建虚拟机--自定义 下一步-- ...

  5. 老男孩Python全栈开发(92天全)视频教程 自学笔记20

    day20课程内容: 模块: #模块一共三种:1.Python标准库 2.第三方模块 3.应用程序自定义的模块#import sysimport jisuanapp#print(jisuanapp.a ...

  6. 老男孩Python全栈开发(92天全)视频教程 自学笔记07

    day7课程内容: Python的编码解码 二进制 --->ASCII:只能存英文和拉丁字符,一个字符占一个字节,8位 ------->gb2312:只能6700多个中文,1980年 -- ...

  7. 老男孩Python全栈开发(92天全)视频教程 自学笔记06

    day6课程内容: tuple(元祖) 创建元祖: tup0=() #没有元素的一个元祖 tup1=(20,)#只有一个元素的元祖 元祖可读,不可修改 Dictionary(字典)#Python里唯一 ...

  8. 老男孩Python全栈开发(92天全)视频教程 自学笔记05

    day5课程内容: 集成开发环境(IDE) VIM #经典的Linux下的文本编辑器 Eclipse #Java IDE Visual Studio #微软开发的IDE notepad++ subli ...

  9. 老男孩Python全栈开发(92天全)视频教程 自学笔记04

    day4课程目录: 逻辑运算符 while循环 day4课程内容梳理: 逻辑运算符 算数运算符:+,-,*,/,%,** 比较运算符:< ,>, ==,<=,>=,!=, 逻辑 ...

  10. 老男孩Python全栈开发(92天全)视频教程 自学笔记21

    day21课程内容:  json: #序列化 把对象(变量)从内存中 编程可存储和可传输的过程 称为序列化import jsondic={'name':'abc','age':18}with open ...

随机推荐

  1. Hystrix请求命令 HystrixCommand、HystrixObservableCommand

    Hystrix有两个请求命令 HystrixCommand.HystrixObservableCommand. HystrixCommand用在依赖服务返回单个操作结果的时候.又两种执行方式  -ex ...

  2. 搞个小项目吧,做一个ppt播放器

    先来两个参考链接,接下来再进行实战 http://www.geek-workshop.com/forum.php?mod=viewthread&tid=1137 http://www.geek ...

  3. Linxu指令--date,cal

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数 ...

  4. HTTP基本知识

    1.TCP/IP 传输控制协议/因特网互联协议 (1)应用层:决定向用户提供应用服务时通信的活动(FTP.DNS和HTTP都属于该层). (2)传输层:提供处于网络连接中的两台计算机之间的数据传输(T ...

  5. css层叠样式初学

    一.css简介 1.层叠样式表:叠加效果,不同css对同一html修饰,冲突部分,优先级高作用,不冲突部分,共同作用 2.css作用 (1)修饰html (2)替代了标签自身的颜色,字号等属性,提高复 ...

  6. 新建play项目eclipsify后导入eclipse后无法debug调试

    Error occurred during initialization of VMagent library failed to init: jdwpERROR: Cannot load this ...

  7. Jmeter Smock Test规范设计

    Jmeter Smock Test规范设计 一.Smock Test物料 1.开发运行工具Jmeter,(下载地址: http://jmeter.apache.org/download_jmeter. ...

  8. Linux CentOS 7 下 JDK 1.7 安装与配置

    前言 简单记录一下在CentOS 7中安装配置JDK 1.7的全过程~ 下载 首先是jdk 1.7 64bit & 32bit的下载地址: jdk-7u79-linux-x64.tar.gz  ...

  9. POJ 2154 Color [Polya 数论]

    和上题一样,只考虑旋转等价,只不过颜色和珠子$1e9$ 一样的式子 $\sum\limits_{i=1}^n m^{gcd(i,n)}$ 然后按$gcd$分类,枚举$n$的约数 如果这个也化不出来我莫 ...

  10. 汇编之EBP的认识。

    说到EBP就不能忽略了ESP.ESP是一个指针,始终执行堆栈的栈顶.而EBP就是那个所谓的堆栈了. 先看几个例子吧. push ebp ; 把ebp,堆栈的0地址压入堆栈 mov ebp,esp ; ...