今日内容

'''
用代码模拟博客园系统。 项目分析:
一、首先程序启动,页面显示下面内容供用户选择: 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的更多相关文章

随机推荐

  1. 【九度OJ】题目1467:二叉排序树 解题报告

    [九度OJ]题目1467:二叉排序树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1467 题目描述: 二叉排序树,也称为二叉查找树 ...

  2. 【剑指Offer】把二叉树打印成多行 解题报告(Python)

    [剑指Offer]把二叉树打印成多行 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  3. golang切片的一些自问自答

    你好,我是轩脉刃.这篇是关于go切片的一些问题和回答. go的切片基本上是代码中使用最多的一种数据结构了,使用这种数据结构有哪些要注意的点,这个是非常必要了解的东西.基本上,以前写的一篇博客 http ...

  4. 第二十一个知识点:CRT算法如何提高RSA的性能?

    第二十一个知识点:CRT算法如何提高RSA的性能? 中国剩余定理(The Chinese Remainder Theorem,CRT)表明,如果我们有两个等式\(x = a \mod N\) 和\(x ...

  5. ProtoBuf3语法指南(Protocol Buffers)_下

    0.说明 ProtoBuf3语法指南, 又称为proto3, 是谷歌的Protocol Buffers第3个版本. 本文基于官方英文版本翻译, 加上了自己的理解少量修改, 一共分为上下两部分. 1.A ...

  6. 开源社区合入patch的步骤

    以Ranger项目为例,说明开源社区合入patch的详细步骤. 1.reviews页面下载patch 进入到review页面:https://reviews.apache.org/r/67919/ 点 ...

  7. Unity——火烧+水波纹效果(噪音图)

    使用噪声图实现火烧和水波纹效果: 1.溶解 关闭裁剪,根据noise纹理取样,r通道和_BurnAmount比较,裁剪掉小于_BurnAmount的片元: 通过菲尼尔得到裁剪边缘,添加火焰燃烧的颜色进 ...

  8. 初识python: 多态

    多态:允许你将父对象设置成为,与一个或更多其子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作.    简单讲就是:允许将子类类型的指针赋值给父类类型的指针. 多态 ...

  9. Tool_BurpSuite安装和简单使用

    一.安装 1.检查Java环境 Burp Suite是用Java语言开发的,运行时依赖于JRE,因此需要先配置Java环境.在CMD中输入java -version 出现下图的结果,证明已配置Java ...

  10. vue再页面渲染json数据时没有显示

    对象点属性不能获取数据. 原因: 在创建数据对象时我使用了k,v方式:tempMap['category '] = this.category[i].label 如果在创建数据时使用的k,v方式,那么 ...