python123.io能不能补交作业_Python学习day1作业总结

为了以后更好更快速的复习,此博客记录我对作业的总结。对于基础作业,我认为最重要的是过程,至于实现是不是完美,代码是不是完美,虽然重要,但是作业过程中,用到的知识点是值得总结和整理的。

一.模拟登陆:

1. 用户输入帐号密码进行登陆

2. 用户信息保存在文件内

3. 用户密码输入错误三次后锁定用户

思路:

1)输入时用户名后,先判断用户名是否被锁,然后检查用户名是否存在用户数据库;

2)输入相同不存在用户名3次,此用户名被锁;

3)输入用户名存在时才可输入密码,相同用户名时,输入密码错误三次,此用户名被锁;

4)若每次都没输入存在的用户,则再次要求输入用户,直到达到总输入次数;

基本流程图:

wKioL1gMPYDC8XOrAAHI3_mcZTE285.jpg

代码:cat user_login.py #主程序#!#!/usr/bin/env python

#_*_coding:utf-8_*_

'''

* Created on 2016/10/10 22:13.

* @author: Chinge_Yang.

'''

import os

import getpass

retry_max = 3

retry_count = 0

user_file = "user.txt"

lock_file = "user_lock.txt"

user_same = 0

user_tmp = ""

if not os.path.exists(lock_file): #不存在时,则创建

f = open(lock_file,'w')

f.close()

while retry_count < retry_max:

#输入用户名

user_name = input("Please input your name:")

#输入的用户名和上次输入的对比

if user_name == user_tmp:

#用户一样数加1

user_same += 1

else:

#用户一样数归0

user_same = 0

#输入的用户名存为临时变量

user_tmp = user_name

#判断用户是否被锁

lock_check = open(lock_file)

for line in lock_check:

line = line.split()

#用户被锁,打印提示

if user_name == line[0]:

exit("User \033[1;31;40m%s\033[0m is locked!" % user_name)

lock_check.close()

#查看是否存在于用户数据库

user_check = open(user_file)

for l in user_check:

l = l.split()

user = l[0]

passwd = l[1]

if user_name == user:

#输入密码

#user_passwd = input("Please input your password:")

user_passwd = getpass.getpass("\033[1;33;40mPlease input your password:\033[0m")

#判断密码是否正确

if user_passwd == passwd:

exit("\033[1;32;40mWelcome to you!\033[0m")

else:

print("User \033[1;31;40m%s\033[0m password is error!" % user_name)

#用户存在于数据库,跳出循环

break

else:

print("User \033[1;31;40m%s\033[0m not match in the user file!" % user_name)

user_check.close()

if user_same >= 2:

print("User \033[1;31;40m%s\033[0m name was locked!" % user_name)

#将用户名写入到锁定文件中

file = open(lock_file,"a")

file.write(user_name+"\n")

file.close()

retry_count += 1

user.txt文件内容格式:cat user.txtapache 123

jim 234

docker 333

fank yhn

总结:

1.getpass模板用于输入密码时,不显示明文;

2.os.path.exists(文件路径)用于判断文件是否存在;

3.input的用法,版本3,默认输入的内容是字符类型,如果是变量名,则为此变量名的数据类型;

4.if判断语句用法;

5.while循环语句用法;

6.split()指定分隔符对字符串切片用法;

7.print(“%s” % name)等格式化输出;

8.颜色输出用法:手打出来 \033[32;1m内容\033[0m ;

9.数学算法使用;

二.三级菜单:

1. 运行程序输出第一级菜单

2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单

3. 菜单数据保存在文件中

思路:

1.菜单数据使用字典保存在文件中,使用import读取;

2.获取一级菜单;

3.获取二级菜单;

4.获取三级菜单;

5.使用循环打印菜单;

基本流程图:

wKioL1gMMjLheCI_AAFIngjR7-Q535.png

代码:cat Three_layer_menu.py #主程序#!/usr/bin/env python

#_*_coding:utf-8_*_

'''

* Created on 2016/10/16 21:31.

* @author: Chinge_Yang.

'''

import sys

import menu

while True:

#定义一层菜单为字典

one_dict = {}

#获取字典所有的键

one_layer = menu.menu.keys()

#获取字典所有的枚举

one_enu = enumerate(one_layer)

#一层菜单字典

for index1,value1 in one_enu:

one_dict[index1]=value1

for k1 in one_dict:

print ("\033[32m%d\033[0m --> %s" %(k1,one_dict[k1]))

print ("输入【back】:返回;【quit】:退出")

once_select = input("请输入你的选择:\n").strip()

if once_select.isdigit():

once_select = int(once_select)

if 0 <= once_select < len(one_dict):

print("---->进入一级菜单 \033[32m%s\033[0m" %(one_dict[once_select]))

while True:

#定义二层菜单为字典

two_dict = {}

# 获取字典所有的键

two_layer = menu.menu[one_dict[once_select]].keys()

# 获取字典所有的枚举

two_enu = enumerate(two_layer)

# 二层菜单字典

for index2, value2 in two_enu:

two_dict[index2] = value2

# 打印二层菜单

for k2 in two_dict:

print("\033[32m%d\033[0m --> %s" % (k2, two_dict[k2]))

print("输入【back】:返回;【quit】:退出")

twice_select = input("请输入你的选择:\n").strip()

if twice_select.isdigit():

twice_select = int(twice_select)

if 0 <= twice_select < len(two_dict):

print("---->进入二级菜单 \033[32m%s\033[0m" % (two_dict[twice_select]))

# 定义三层菜单列表

three_layer = menu.menu[one_dict[once_select]][two_dict[twice_select]]

while True:

# 打印三层菜单

for k3 in three_layer:

print (k3)

print ("输入【back】:返回;【quit】:退出")

three_select = input("请输入你的选择:\n").strip()

if three_select == "back":

break

elif three_select == "quit":

sys.exit ("----谢谢使用----")

continue

else:

if twice_select == "back":

break

elif twice_select == "quit":

sys.exit ("----谢谢使用----")

print ("\033[31m请输入数字\033[0m")

else:

print("----\033[31m数字超出范围,请重新输入!\033[0m----")

else:

if once_select == "back":

break

elif once_select == "quit":

sys.exit ("----谢谢使用----")

print ("\033[31m请输入数字\033[0m")cat menu.py#!/usr/bin/env python

# _*_coding:utf-8_*_

'''

* Created on 2016/10/16 19:37.

* @author: Chinge_Yang.

'''

menu = {

"家用电器": {

"电视": [

"合资品牌电视",

"国产品牌电视",

"互联网品牌电视"

],

"空调": [

"壁挂式空调",

"柜式空调",

"中央空调",

"空调配件"

],

"洗衣机": [

"滚筒洗衣机",

"洗烘一体机",

"波轮洗衣机",

"迷你洗衣机",

"洗衣机配件"

]

},

"电脑": {

"电脑整机": [

"笔记本",

"游戏本"

"平板电脑",

"平板电脑配件",

"台式机",

"一体机服务器",

"笔记本配件"

],

"电脑配件": [

"显示器",

"CPU",

"主板",

"硬盘",

"内存"

],

"外设产品": [

"鼠标",

"键盘",

"键鼠套装",

"网络仪表仪器",

"U盘",

"移动硬盘"

]

}

}

总结:

1.字典的用法,包括获取key,value及相关函数用法;

2.列表的用法,遍历列表的用法;

3.import导入py文件用法;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值