python18day
今日内容
'''
用代码模拟博客园系统。
项目分析:
一、首先程序启动,页面显示下面内容供用户选择:
1.请登录
2.请注册
3.进入文章页面
4.进入评论页面
5.进入日记页面
6.进入收藏页面
7.注销账号
8.退出整个程序
二、必须实现的功能:
1.注册功能要求:
a.用户名、密码要记录在文件中
b.用户名要求:只能含有字母或者数字,不能含有特殊字符并且确保用户名唯一。
c.密码要求:长度要在6~16个字符之间。
d.超过三次登录还未成功,则退出整个程序。
2.登录功能要求:
a.用户输入用户名,密码进行登录验证。
b.登录成功后,才可以访问3~7选项,如果没有登录或登陆不成功时访问3~7选项,不允许访问,让其先登录(装饰器)。
3.进入文章页面要求:
a.提示欢迎xx进入文章页面。
b.此时用户可以选择:直接写入内容,还是导入md文件。
1.如果选择直接写内容:直接写文件名/文件内容....然后创建一个文章。
2.如果选择导入md文件:让用户输入已经准备好的md文件的文件路径(相对路径即可,比如函数的进阶.md),然后将md文件全部内容写入文章。
4.进入评论页面要求:
提示欢迎xx进入评论页面。
5.进入日记页面要求:
提示欢迎xx进入日记页面。
6.进入收藏页面要求:
提示欢迎xx进入收藏页面。
7.注销账号要求:
不要退出整个程序,而是将已登录的状态变成未登录的状态(访问3~7选项需要重新登录)。
8.退出整个程序要求:
结束整个程序。
'''
status_dict={
'username':None,
'status':False,
}
def get_user_pwd():
user_dict={}
with open('register',encoding='utf-8')as f:
for line in f:
line_list=line.strip().split('|')
user_dict[line_list[0].strip()]=line_list[1].strip()
return user_dict
def login():#登录认证
u_dict=get_user_pwd()
count=1
while count<4:
username=input('请输入用户名:').strip()
password = input('请输入密码').strip()
if username in u_dict and password == u_dict[username]:
print('登录成功')
status_dict['username'] = username
status_dict['status'] = True
return True
else:
print('用户名或密码错误,重新登录')
count += 1
def register():
pass
def auth(f):
'''
你的装饰器完成,访问被装饰函数之前,写一个三次登录认证的函数
登录成功,让其访问被装饰的函数。登录没有成功,不让访问。
:param f:
:return:
'''
def inner(*args,**kwargs):
'''访问函数之前的操作,功能'''
if status_dict['status']:
ret=f(*args,**kwargs)
'''访问函数之后的操作,功能'''
return ret
else:
if login():
ret=f(*args,**kwargs)
return ret
return inner()
#@auth #下面四个函数访问前,登录成功可以,没成功不能看。
def artical():
print('欢迎访问文章页面')
#@auth
def comment():
print('欢迎访问评论页面')
#@auth
def dairy():
print('欢迎访问日记页面')
#@auth
def collections():
print('欢迎访问收藏页面')
def login_out():
pass
def quit():
pass
# 这样可以,但是不好
# while 1:
# print('''
# 1.请登录
# 2.请注册
# 3.进入文章页面
# 4.进入评论页面
# 5.进入日记页面
# 6.进入收藏页面
# 7.注销账号
# 8.退出整个程序
# ''')
# num=input('请输入序号:').strip()
# if num=='1':
# login()
# elif num=='2'……
dic={
1:login,
2:register,
3:artical,
4:comment,
5:dairy,
6:collections,
7:login_out,
8:quit
}
while 1:
print('''
1.请登录
2.请注册
3.进入文章页面
4.进入评论页面
5.进入日记页面
6.进入收藏页面
7.注销账号
8.退出整个程序
''')
num=input('请输入选项:').strip()
num=int(num)
dic[num]()
# artical() #inner()
# comment() #inner()
# dairy() #inner()
# collections() #inner()
软件开发规范
为什么要有软件开发规范?
app、软件不可能都写在一个文件中,效率太低且不规范
代码总行数2085+203=2288行
python18day的更多相关文章
随机推荐
- 【LeetCode】871. Minimum Number of Refueling Stops 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 贪心算法 日期 题目地址:https://leetc ...
- Mysterious For(hdu4373)
Mysterious For Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- zbar解析二维码demo
开发环境;ubuntu 18.04 IDE:clion 2019 源文件.cpp #include <opencv2/opencv.hpp> #include <zbar.h> ...
- http协议的状态码400,401,403,404,500,502,503,301,302等常见网页错误代码
1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101(切换协议) 请求者已要求 ...
- 编写Java程序,现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示
查看本章节 查看作业目录 需求说明: 现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示 实现思路: 创建解析 XML 文档类 ParseXML 和窗体类 ...
- nginx 安装配置及使用 启动权限拒绝问题
安装 yum install -y nginx 查看安装的路径 whereis nginx 可能会有所不同 需要根据自己的查看 执行目录:/usr/sbin/nginx 模块所在目录:/usr/lib ...
- 每天学一点——python变量、常量与数字类型
python变量.常量与数字类型 常量 (一句话能概括先讲它) 严格来讲,python中除了π与N就没有不变的量 所以,在python中我们识别常量是看它是否全大写(如下图) 变量 变量,顾名思义,就 ...
- 微信公众号开发--.net core接入
.net进行微信公众号开发的例子好像比较少,这里做个笔记 首先,我们需要让微信能访问到我们的项目,所以要么需要有一个可以部署项目的连接到公网下的服务器,要么可以通过端口转发将请求转发到我们的项目,总之 ...
- From Hero to Zero
题目描述: 有一天,小明给了你两个数字n和k,现在,你需要对数字n进行一下操作: 对于每一步操作,你可以选择下面其中一个项目: 1.将n的值减少1. 2.如果n能被k整除,可以使n/k 比如:n=27 ...
- Microsoft HoloLens 开发(2): 运行Hello World
1.下载 MixedRealityToolkit-Unity (混合现实工具包) 什么是 MixedRealityToolkit-Unity ? 一个脚本和组件的集合,加速针对微软全息和Windows ...