7-5
(a)修改那个脚本,使它能记录用户上次的登录日期和时间(用 time 模块),并与用户密码一起
保存起来。程序的界面有要求用户输入用户名和密码的提示。无论户名是否成功登录,都应有提示,在户名成功登录后,应更新相应用户的上次登录时间戳。如果本次登录与上次登录在时间上相差不
超过 4 个小时,则通知该用户: “You already logged in at: <last_ login_timestamp>.”
(b) 添加一个“管理”菜单,其中有以下两项:(1)删除一个用户 (2)显示系统中所有用户的名
字和他们的密码的清单。
#!/usr/bin/env python # coding=utf-8 import time import re def newuser(): k=0 print "新用户注册" name = raw_input("用户名:") f=file("./username.txt","r+") for user_string in f.readlines(): user = user_string[0:user_string.find(' ')] if name == user: k=1 break if k==0: f=file("./username.txt","a+") password=raw_input("用户密码:") print ("新用户创建成功!") login_time = time.strftime("%Y-%m-%d %X",time.localtime()) user_string = name +" "+ password +"+"+ login_time + '\n' f.write(user_string) f.close() else: print "ERROR" def login(): k=0 print "用户登陆" name = raw_input("用户名:") password = raw_input("密码:") f=file("./username.txt","a+") for user_string in f.readlines(): user = user_string[0:user_string.find(' ')] passwd = user_string[user_string.find(' ')+1:user_string.find('+')] last_login = user_string[user_string.find('+')+1:len(user_string)-1] if user == name and passwd == password: print "登陆成功" login_time = time.strftime("%Y-%m-%d %X",time.localtime()) Del(user) user_string = name +" "+ password +"+"+ login_time + '\n' f.write(user_string) f.close() if login_time[0:10] == last_login[0:10] and int(login_time[11:13]) - int(last_login[11:13]) <=4 : print "you already login in 4 hours:%s"%(last_login) else : print "last login time : %s"%(last_login) k=1 showuser() break if k == 0: print "ERROR" f.close() def showuser(): while 1: print "(d)elete user" print "(s)how user" print "(q)uit" choice=raw_input( "Enter choice:") if (choice == 'd') or (choice == 'D'): user1=raw_input("请输入要删除的用户名:") Del(user1) print "%s Successful delete" %user1 elif (choice == 's') or (choice == 'S'): Show() elif (choice == 'q') or (choice == 'Q'): break def showmenu(): while 1: print "(n)ew user login" print "(e)xisting user login" print "(q)uit" choice=raw_input( "Enter choice:") if (choice == 'n') or (choice == 'N'): newuser() elif (choice == 'e') or (choice == 'E'): login() elif (choice == 'q') or (choice == 'Q'): break def Del(user): f=open("./username.txt",'r') userfile = f.readlines() f=open("./username.txt",'w') for x in userfile: if user in x: continue else: f.write(x) f.close() def Show(): f=open("./username.txt",'r') for user_string in f.readlines(): print user_string f.close() showmenu()
7-8
人力资源。创建一个简单的雇员姓名和编号的程序。让用户输入一组雇员姓名和编号。
你的程序可以提供按照姓名排序输出的功能,雇员姓名显示在前面,后面是对应的雇员编号。附加
题:添加一项功能,按照雇员编号的顺序输出数据。
#!/usr/bin/env python
#coding=utf-8
count=input("请输入需要创建用户数:")
dic = {}
i = 0
while i < count:
i +=1
key = raw_input("请输入用户姓名:")
if key in dic:
print "该用户已经存在,请确认后重新输入"
i -=1
else:
num = input("请输入用户编号:")
if num in dic.values():
print "编号重复请查证"
else:
dic[key]=num
sorted_dic=sorted(dic.iteritems(), key=lambda dic : dic[1])
print sorted_dic