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】题目1183:守形数 解题报告
[九度OJ]题目1183:守形数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1183 题目描述: 守形数是这样一种整数, ...
- 1080 - Binary Simulation
1080 - Binary Simulation PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 64 ...
- Saving Beans(hud3037)
Saving Beans Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- 【漏洞复现】ThinkAdmin v5和v6 未授权列目录任意文件读取(CVE-2020-25540)
ThinkAdmin v5和v6 未授权列目录/任意文件读取(CVE-2020-25540) 漏洞简介 ThinkAdmin是一套基于ThinkPHP框架的通用后台管理系统.ThinkAdmin v6 ...
- CS学习资料百度云链接
CS学习资料百度云链接 [0]Springboot微服务开发天气预报系统视频教程https://pan.baidu.com/s/1joz7flyztCq8oklBlsz8dQ提取密码:cpz7 [1] ...
- 从JVM设计角度解读Java内存模型
第十六章:Java内存模型 本文我们将重点放在Java内存模型(JMM)的一些高层设计问题,以及JMM的底层需求和所提供的保证,还有一些高层设计原则背后的原理. 例如安全发布,同步策略的规范以及一致性 ...
- Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。
返回本章节 返回作业目录 需求说明: 编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字. 实现思路: 定义方法findNums(),用于实现查找所有能够整除指定数 ...
- Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...
- Tool_BurpSuite安装和简单使用
一.安装 1.检查Java环境 Burp Suite是用Java语言开发的,运行时依赖于JRE,因此需要先配置Java环境.在CMD中输入java -version 出现下图的结果,证明已配置Java ...
- CentOS 7 连接不到网络解决方法(设置静态ip)
使用VM12创建虚拟机并安装CentOS 7,但是安装完成后发现连接不到网络. ping jd.com发现不通 因为在创建虚拟机的时候 我们选择的是NAT模式 这里给出NAT模式下对应的的解决方法: ...