python脚本

7–5. userpw2.py. 下面的问题和例题 7.1 中管理名字-密码的键值对数据的程序有关。
(a)修改那个脚本,使它能记录用户上次的登录日期和时间(用 time 模块),并与用户密码一起
保存起来。程序的界面有要求用户输入用户名和密码的提示。无论户名是否成功登录,都应有提示,
在户名成功登录后,应更新相应用户的上次登录时间戳。如果本次登录与上次登录在时间上相差不
超过 4 个小时,则通知该用户: “You already logged in at: <last_ login_timestamp>.”
(b) 添加一个“管理”菜单,其中有以下两项:(1)删除一个用户 (2)显示系统中所有用户的名
字和他们的密码的清单。
(e) 要求用户名不区分大小写。
(g)合并“新用户”和“老用户”两个选项。如果一个新用户试图用一个不存在的用户名登录,

询问该用户是否是新用户,如果回答是肯定的,就创建该帐户。否则,按照老用户的方式登录。

#!/usr/bin/env python
#coding=utf-8

import getpass
import time

db = {}
db1 = {}

def newuser():
	prompt = '\n\n建立账户名:'
	while True:
		name = raw_input(prompt).lower()
		if db.has_key(name):
			prompt = '账户已经存在,请建立别的账户'
			continue
		else :
			break
	pwd = getpass.getpass('密码:')
	db1[name] = time.time()
	db[name] = pwd


def olduser():
	name = raw_input('\n\n帐号:').lower()
	pwd = getpass.getpass('密码:')
	passwd = db.get(name)
	if passwd == pwd :
		print '\n登陆成功',name
		if time.time()-14400 < db1[name]:
			print '上次登陆时间为:',time.ctime(db1[name])
		db1[name] = time.time()
	else :
		print '密码错误,登录失败'
	if name not in db.keys():
		build = raw_input('该用户不存在,是否建立?(y/n)').strip()[0].lower()
		if build not in 'yn':
			print '您的输入有误,请重新输入'
		elif build == 'y':
			pwd = getpass.getpass('请输入密码:')
			db1[name] = time.time()
			db[name] = pwd
		else:
			pass


def removeuser():
	name = raw_input('\n\n请输入要删除的账户名:').lower
	db1.pop(db[name])
	db.pop(name)
	print '删除成功!'

def showall():
	print "\n\n帐号\t:   密码\t" 
	print '*'*16
	for i in db:
		print "%s\t:   %s\t" %(i,db[i])

def showmenu():
	prompt = """
---------------------------
|  (N) 创建新账户         |
|  (E) 现有用户登录       |
|  (R) 删除用户           |
|  (S) 显示所有账户密码   |
|  (Q) 退出               |
---------------------------

Enter choice:"""

	done = False
	while not done:
		chosen = False
		while not chosen:
			try:
				choice = raw_input(prompt).strip()[0].lower()
			except (EOFError,KeyboardInterrupt):
				choice = 'q'
			print '\n您的选择是:[%s]' %choice
			if choice not in 'sneqr':
				print '您的输入有误,请重新输入!'
			elif choice == 'q':
				chosen = True
				done = True
			elif choice == 'n':
				newuser()
			elif choice == 'e':
				olduser()
			elif choice == 'r':
				removeuser()
			elif choice == 's':
				showall()			
	
if __name__ == '__main__':
	showmenu()

7-8.
人力资源。创建一个简单的雇员姓名和编号的程序。让用户输入一组雇员姓名和编号。
你的程序可以提供按照姓名排序输出的功能,雇员姓名显示在前面,后面是对应的雇员编号。附加
题:添加一项功能,按照雇员编号的顺序输出数据。


#!/usr/bin/env python
#coding=utf-8

a = {}

##输入模块##
print "您可以依次输入姓名与其对应的编号,输入'.'退出"
while 1:
	b = raw_input("请输入姓名:")

	if b == '.' : 
                print '结束输入.'
                break
 
	c = raw_input("请输入编号:")

	if c == '.' :
		print '结束输入.'
		break	

	a.setdefault(b,c)

##输出模块##
print '请选择输出方式:\n\t 1 --------- 按姓名排序输出\n\t 2 --------- 按编号排序输出'

while 1:
	d = raw_input()
	if int(d) == 1:
		print "姓名\t:   编号\t" 
		for i in sorted(a):
			print "%s\t:   %s\t" %(i,a[i])
		break 
	elif int(d) == 2:
		print "姓名\t:   编号\t"
		dic = dict( sorted(a.items(),key = lambda items:items[1]))
		for i in dic:
			print "%s\t:   %s\t" %(i,dic[i])
		break
	else:
	    	pass

文本处理. 要求输入一个姓名列表,输入格式是“Last Name, First Name,” 即 姓,
逗号, 名. 编写程序处理输入, 如果用户输入错误, 比如“First Name Last Name,” , 请纠正这
些错误, 并通知用户. 同时你还需要记录输入错误次数. 当用户输入结束后, 给列表排序, 然后以
"姓 , 名" 的顺序显示.


#!/usr/bin/env python
#coding=utf-8
a = []
count = input("您要输入几组姓名:")

print "请依次输入%d组姓名,按如下格式:\n\t姓,名\n" %(count)
i = 0
j = 0
while 1:
	if i == count :
 	       break
        else :
               name = raw_input("请输入姓名:")
        if ","  not in name or  "," == name[0] or "," == name[-1] or name.count(',') != 1:
               print "您的输入有误,请按照正确格式重新输入。"
               j += 1
        else :
               i += 1
               a.append(name)
               print "输入成功!"
a.sort()
print "\n您输错了%d次\n" %(j)
print  "最终输入结果为:"
for i in range(0,count):
        print a[i]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值