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的更多相关文章
随机推荐
- 【九度OJ】题目1185:特殊排序 解题报告
[九度OJ]题目1185:特殊排序 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1185 题目描述: 输入一系 ...
- 【LeetCode】732. My Calendar III解题报告
[LeetCode]732. My Calendar III解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/my-calendar ...
- Once Again...
Once Again... 题目链接 题意 给n个数,然后T次循环后组成一个新的数列,求这个数列的最长不递减子序列. 思路 因为最多就100个元素,所以当m<=100的时候直接暴力求最长不递减子 ...
- webSocket 与HTTP
WebSocket 协议在2008年诞生,2011年成为国际标准.现在所有浏览器都已经支持了.WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真 ...
- Linq和Lambda 性能对比
Linq和Lambda 性能对比 1.Where() 使用LINQ创建一个简单的where查询 var query = from person in PersonCollection where pe ...
- .net Core WebApi使用AutoFac
1.在要添加的项目中选中 依赖项->右键->管理NuGet程序包(N) 2.在NuGet包管理器中输入Autofac,安装选中文件 3.在项目中找到Program.cs文件,添加如下代码 ...
- Ranger-Yarn插件安装
Ranger-Yarn插件ranger-0.6.0-yarn-plugin安装到Yarn的所有ResourceManager节点, 其他的NodeManager节点不需要安装. 登陆hdfs安装的用户 ...
- MongoDB与微服务
1. 微服务的优势 * 开发速度快 * 变化响应快 * 易维护 * 扩容简单2. 微服务架构设计要素 * 服务解耦(Decouple) * HTTP API - 简单接口(Dumb Pipes) * ...
- 不用下载Axure RP Extension for Chrome插件查看原型文件的方法
Axure RP Extension for Chrome是一款谷歌插件,主要可以用来查看原型文件.以前安装插件的时候总是找半天资源,很麻烦,最近发现了一种新方法可以不用下载插件资源.其实在原型文件中 ...
- ssh到localhost或127.0.0.1拒绝连接
通过ssh连接到本机报错 ssh: connect to host localhost port 22: Connection refused, 你能用ssh登录其它主机并不代表着本地有ssh服务,要 ...