作业:
作业1:用户登录
1)程序说明:
a.用户输入密码验证成功然后打印欢迎信息
b.如果密码错误,用户登录失败,提示用户,密码错误
c.用户输入密码错误3次,则用户锁定
d.当用户多次输入不存在的用户时,提示错误信息,并让用户等待10s之后再次输入
账户信息保存在user.txt中,例子:dean,dean123,0 这三个值分别表示的含义:第一位是:username,第二位是:password,第三位表示用户的状态,0表示正常,1表示锁定
2)流程图如下:
3)程序代码:
#AUTHOR:FAN
import time
#定义一个用户字典
user_dict={}
#定义一个用户列表
user_list=[]
f=open("user.txt",'r')
#用for循环获取文件中每行的内容,并写入到字典中,value_interm[0]表示username,value_interm[1]表示password,value_interm[2]表示
#账户的锁定信息:0表示正常,1表示锁定
for line in f.readlines():
useriterm = line.strip()
value_interm = useriterm.split(',')
value_username = value_interm[0]
value_password = value_interm[1]
value_lock = value_interm[2]
user_dict[value_username]={
"name":value_username,
"password":value_password,
"lock":value_lock
}
f.close()
#print(user_dict)
#定义个count_num用户计算用户输入错误用户的次数
count_num = 0
#用于跳出多层循环
flag = True
while flag:
if count_num == 3:
print("dute to input non-existent user ,you need to wait 10s")
time.sleep(10)
# 获取用户输入的用户名
user_name = input("please input your username:")
if user_name in user_dict.keys():
#print(type(user_dict[user_name]["lock"]))
#判断用户是否被锁定
if int(user_dict[user_name]["lock"]) == 0:
for i in range(3):
password = input("please input you password:")
#判断密码是否正确
if password == user_dict[user_name]["password"]:
print("welcome to login my system!")
flag=False
break
else:
print("password is error")
else:
#用户输入密码错误三次后被锁定
user_dict[user_name]["lock"]="1"
f = open("user.txt","w+")
#将字典装换成列表,将改变的信息写入到文件中
for value in user_dict.values():
user_list =[value["name"],value["password"],value["lock"]]
user_list =",".join(user_list)
f.write(user_list+"\n")
print("you input wrong password too many,the user is locked")
break
else:
print("user is locked")
else:
print("user is not exist")
count_num+=1
作业2:三级菜单
1)程序说明:
a.用户运行程序后,打印第一级菜单
b.用户输入相应的编号进入下一级菜单,当编号错误的时候会提示用户输入错误,并让用户重新输入
c.用户在每一级的时候,都能通过输入q退出程序,并能通过输入up返回到上级菜单,返回到上级目录时要将上级目录进行打印
d.用户到最后一级的时候提示用户已经到最后一级目录,可以直接退出程序或返回上级目录
2)流程图如下:
3)程序代码:
#AUTHOR:FAN
#定义一个菜单字典
menu_dict={
"河南省":{
"焦作市":{
"修武县":{"AA","BB","CC"},
"武陟县":{"DD","EE","FF"},
"博爱县":{"GG","HH","II"}
},
"新乡市":{
"辉县":{"AA","BB","CC"},
"封丘县":{"DD","EE","FF"},
"延津县":{"GG","HH","II"}
}
},
"河北省":{
"邢台":{
"宁晋县":{"AA","BB","CC"},
"内丘县":{"DD","EE","FF"},
"邢台县":{"GG","HH","II"}
},
"唐山":{
"乐亭县":{"AA","BB","CC"},
"唐海县":{"DD","EE","FF"},
"玉田县":{"GG","HH","II"}
}
}
}
#用户退出多级菜单用flag
flag =True
while flag:
#用于记录一级菜单key的个数
count1 = 0
#打印一级菜单
for index,key in enumerate(menu_dict.keys()):
count1+=1
print(index,key)
user_choice = input("please input your choice:")
#判断用户输入的值是否为全数字
if user_choice.isdigit() is True:
user_choice = int(user_choice)
#判断用户输入的值是否大于列表的最大值
if user_choice < count1:
#将字典转换成列表,menu_dict.keys()默认不是列表
menu_list = list(menu_dict.keys())
else:
print("you need input right num")
continue
elif user_choice == "q":
flag= False
break
else:
print("please input a num")
continue
while flag:
count2= 1
for index,key in enumerate(menu_dict[menu_list[user_choice]].keys()):
count2+=1
print (index,key)
user_choice2 = input("please input your choice(q:退出程序,up上一级):")
if user_choice2.isdigit() is True:
user_choice2 = int(user_choice2)
if user_choice2 < count2:
menu_list2 = list(menu_dict[menu_list[user_choice]].keys())
else:
print("you need input right num")
continue
elif user_choice2 == "q":
flag=False
break
elif user_choice2 =="up":
break
else:
print("please input a num")
continue
while flag:
count3=0
for index,key in enumerate(menu_dict[menu_list[user_choice]][menu_list2[user_choice2]].keys()):
print(index,key)
count3+=1
user_choice3 =input("please input your choice(q:退出程序,up上一级):")
if user_choice3.isdigit() is True:
user_choice3=int(user_choice3)
if user_choice3 < count3:
menu_list3 = list(menu_dict[menu_list[user_choice]][menu_list2[user_choice2]])
else:
print("you need input right num")
continue
elif user_choice3 == "up":
break
elif user_choice3 =="q":
flag =False
break
else:
print("please input a num")
continue
while flag:
for index,key in enumerate(menu_dict[menu_list[user_choice]][menu_list2[user_choice2]][menu_list3[user_choice3]]):
print (index,key)
#提示用户已经到最后一级目录,可以退出或返回上级目录
q_or_up = input("This is last level,you want to q(退出程序) or up(上一级):")
if q_or_up == "q":
flag = False
break
elif q_or_up == "up":
break
else:
continue