《Python核心编程》第7章 习题

本文提供了一系列Python编程练习,涉及字典的排序、创建、管理用户登录信息、加密、图形界面,以及股票投资数据系统和雇员管理程序的设计。用户登录程序需记录登录时间并支持用户管理,股票系统需处理投资数据排序,雇员程序则需实现按姓名和编号排序。同时,还包含了集合操作的练习,涉及交集、并集等。
摘要由CSDN通过智能技术生成
7–3. 字典和列表的方法。
(a) 创建一个字典,并把这个字典中的键按照字母顺序显示出来。

(b) 现在根据已按照字母顺序排序好的键,显示出这个字典中的键和值。

(c)同(b),但这次是根据已按照字母顺序排序好的字典的值,显示出这个字典中的键和值。(注意:对字典和哈希表来说,这样做一般没有什么实际意义,因为大多数访问和排序(如果需要)都是基于字典的键,这里只把它作为一个练习。)

dicta=dict(b=2,a=1,c=3)
for key in sorted(dicta):
    print key

dicta=dict(b=2,a=1,c=3)
for key in sorted(dicta):
    print 'key=%s, value=%s' %(key,dicta[key])

dicta={2:'b',1:'a',3:'c'}
listvalue = dicta.values()
listvalue.sort()
for value in listvalue:
    for key in dicta.keys():
        if value == dicta[key]:
            print 'key=%s, value=%s' %(key,dicta[key])


7-4. 建立字典。

给定两个长度相同的列表,比如说,列表[1, 2, 3,...]和['abc', 'def','ghi',...],用这两个列表里的所有数据组成一个字典,像这样:{1:'abc', 2: 'def', 3: 'ghi',...}

dicta=dict(zip([1,2,3],['abc','def','ghi']))
print dicta

7–5. userpw2.py. 

下面的问题和例题7.1 中管理名字-密码的键值对数据的程序有关。
(a)修改那个脚本,使它能记录用户上次的登录日期和时间(用time 模块),并与用户密码一起保存起来。程序的界面有要求用户输入用户名和密码的提示。无论户名是否成功登录,都应有提示,在户名成功登录后,应更新相应用户的上次登录时间戳。如果本次登录与上次登录在时间上相差不超过4 个小时,则通知该用户: “You already logged in at: <last_ login_timestamp>.”
(b) 添加一个“管理”菜单,其中有以下两项:(1)删除一个用户 (2)显示系统中所有用户的名字和他们的密码的清单。
(c) 口令目前没有加密。请添加一段对口令加密的代码(请参考crypt, rotor, 或其它加密模块)
(d) 为程序添加图形界面,例如,用Tkinter 写。
(e) 要求用户名不区分大小写。
(f) 加强对用户名的限制,不允许符号和空白符。
(g)合并“新用户”和“老用户”两个选项。如果一个新用户试图用一个不存在的用户名登录,
询问该用户是否是新用户,如果回答是肯定的,就创建该帐户。否则,按照老用户的方式登录。

from datetime import datetime
import hashlib
db={}
def newuser():
    value=[]
    prompt='login name desired again: '
    while True:
        name=raw_input(prompt).lower()
        if not name.isalnum() and '' in name:
            print 'name format error'
            continue
        else:
            if db.has_key(name):
                prompt='name taken,try another: '
                continue
            else:
                break
    pwd=raw_input('login passwd desired: ')
    m=hashlib.md5()
    m.update(pwd)
    value.append(m.hexdigest())
    value.append(datetime.now())
    db[name]=value
    print 'new user is %s, register time is %s' %(name,db[name][1])

def olduser():
    name=raw_input('login name desired again: ').lower()
    pwd=raw_input('login passwd desired: ')
    m=hashlib.md5()
    m.update(pwd)
    passwd=db.get(name)
    if passwd[0]==m.hexdigest():
  
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值