当前位置: 首页 > news >正文

python字典程序题_Python练习:字典

题目1

点击这里,下载数据文件 0016_1.txt 到本机上。

这个是一个数据文件,格式如下

薛蟠 4560 42

薛蝌 4460 25

薛宝钗 5776 43

薛宝琴 4346 42

王夫人 3360 25

王熙凤 4460 35

王子腾 5660 45

王仁 5034 65

尤二姐 5324 25

贾芹 5663 25

贾蓉 3446 15

贾兰 3443 35

贾芸 4522 25

尤三姐 5905 45

贾珍 4603 25

这里面有3列数据,分别 保存了 游戏系统的用户名, 用户积分 , 年龄

现在要求大家写一个程序,计算出同一姓氏的人的积分总和。

输出结果格式如下:

薛 : 19142

王 : 18514

尤 : 11229

贾 : 21677

答案视频讲解

题目2

下面的字典里面记录了一个游戏系统中用户的信息。

其中key 是用户的ID, value 是另外一个字典,记录了用户名,用户等级和金币数量。

members = {

1 :{'name':'白月黑羽', 'level':3, 'coins':300},

2 :{'name':'短笛魔王', 'level':5, 'coins':330},

3 :{'name':'紫气一元', 'level':6, 'coins':340},

4 :{'name':'拜月主', 'level':3, 'coins':32200},

5 :{'name':'诸法空', 'level':4, 'coins':330},

6 :{'name':'暗光城主', 'level':3, 'coins':320},

7 :{'name':'心魔尊', 'level':3, 'coins':2300},

8 :{'name':'日月童子', 'level':8, 'coins':3450},

9 :{'name':'不死尸王', 'level':3, 'coins':324},

10:{'name':'天池剑尊', 'level':9, 'coins':13100},

}

要求大家写一个程序,运行的时候先显示如下主菜单

请选择操作选项:

1 查看用户账号信息

2 添加用户

3 删除用户

4 列出所有用户信息

0 退出

如果用户选择 1 选项, 再次提示用户输入账号名, 用户输入账号后,显示该用户的 ID, 等级和 金币数量。

如果用户选择 2 选项, 提示用户输入账号名、等级、金币数量。 用户输入后,要检查该账号名是否已经存在,如果已经存在,则提示用户重新输入。如果用户输入的账号不存在,则添加该信息到字典中。

如果用户选择 3 选项, 提示用户输入账号名。 用户输入后,要检查该账号名是否已经存在,如果不存在,则提示用户重新输入。如果用户输入的账号存在,在用户字典中删除该账号。

如果用户选择 4 选项,则打印出当前用户表里所有用户的信息

如果用户选择 0 选项, 则退出程序。

只要不是选择退出,用户操作完后,再次进入主菜单,让用户再次选择。如此循环,直到用户选择0 退出。

视频讲解

补充练习

VIP实战班学员请联系老师获取补充练习,并做阶段学习交流

题目1-答案

with open('0016_1.txt',encoding='utf8') as f:

infoList = f.read().splitlines()

coinTable = {}

for info in infoList:

# 先去除左右空白字符

info = info.strip()

if not info:

continue

parts = info.split(' ')

name = parts[0]

coin = int(parts[-2])

# 如果姓氏还没有在统计表中

# 创建新元素

if name[0] not in coinTable:

coinTable[name[0]] = coin

# 如果姓氏已经在统计表中

# 累加积分

else:

coinTable[name[0]] += coin

for name1,coins in coinTable.items():

print(f'{name1} : {coins}')

题目2-答案

from pprint import pprint

members = {

1 :{'name':'白月黑羽', 'level':3, 'coins':300},

2 :{'name':'短笛魔王', 'level':5, 'coins':330},

3 :{'name':'紫气一元', 'level':6, 'coins':340},

4 :{'name':'拜月主', 'level':3, 'coins':32200},

5 :{'name':'诸法空', 'level':4, 'coins':330},

6 :{'name':'暗光城主', 'level':3, 'coins':320},

7 :{'name':'心魔尊', 'level':3, 'coins':2300},

8 :{'name':'日月童子', 'level':8, 'coins':3450},

9 :{'name':'不死尸王', 'level':3, 'coins':324},

10:{'name':'天池剑尊', 'level':9, 'coins':13100},

}

# 因为要根据用户名查找用户信息,需要改变字典格式

# 以用户名为key,创建一个字典

name2info = {}

for k,v in members.items():

name = v['name']

# 因为id也是要查询的内容,加到 字典的 value值中

v['id'] = k

name2info[name] = v

# 定义查看用户账号的处理函数

def checkAccount():

name = input('请输入查找的用户账号:')

if name not in name2info:

print(f'对不起,账号 {name} 不存在.')

return

info = name2info[name]

print(f'账号: {name} , ID : {info["id"]} , 等级:{info["level"]} , 金币:{info["coins"]} ')

# 定义添加用户账号的处理函数

def addAccount():

while True:

name = input('请输入添加用户的账号:')

if name in name2info:

print('对不起,该账号已经存在')

else:

break

while True:

level = input('请输入该用户的等级:')

# 如果不是数字 , 则输入格式错误

if not level.isdigit():

print('对不起,等级必须为一个数字')

else:

level = int(level) # 转化为整数

break

while True:

coins = input('请输入该用户的金币数量:')

# 如果不是数字 , 则输入格式错误

if not coins.isdigit():

print('对不起,金币数 必须为一个数字')

else:

coins = int(coins) # 转化为整数

break

# 要产生一个不存在的ID号, 这里我们取 当前最大的ID号+ 1

newId = max(members.keys()) + 1

# 注意: 两个字典里面都要添加

members[newId] = {'name':name, 'level':level, 'coins':coins}

name2info[name] = {'name':name, 'level':level, 'coins':coins, 'id':newId}

# 定义删除用户账号的处理函数

def delAccount():

name = input('请输入要删除的用户账号:')

if name not in name2info:

print(f'对不起,账号 {name} 不存在.')

return

# 注意: 两个字典里面都要删除

theID = name2info[name]['id']

name2info.pop(name)

members.pop(theID)

# 定义打印表内容的处理函数

def showTables():

print('\n现在name2info的表内容是:\n')

pprint(name2info)

print('\n现在members的表内容是:\n')

pprint(members)

menu = '''

请选择操作选项:

1 查看用户账号信息

2 添加用户

3 删除用户

4 列出所有用户信息

0 退出

'''

# 显示主菜单

while True:

choice = input(menu)

# 选择查看查看用户账号

if choice == '1':

checkAccount()

elif choice == '2':

addAccount()

elif choice == '3':

delAccount()

elif choice == '4':

showTables()

elif choice == '0':

break

相关文章:

  • python转换函数使用_【已解决】Python中,将字符串转换为函数,并且实现带参数的函数调用...
  • phpthink验证旧密码_【法制警示】宁夏一手机店老板将他人旧手机回收,竟盗取其支付宝中5000余元......
  • python dll_python调用C dll api
  • pythoncsv数据类型_pandas读取CSV文件时查看修改各列的数据类型格式
  • python标准库os的方法_Python标准库os.path包、glob包使用实例
  • python数字排序_python中如何对数字排序
  • 有趣的python项目_Python几个有趣和特别的小故事
  • python缩进格式错误修改_17个新手常见Python运行时错误
  • python什么是关键字参数_python的位置参数、默认参数、关键字参数、可变参数区别...
  • python数学计算函数_python之数学函数篇
  • linux双系统_windows下的Linux子系统,双系统的日子结束了
  • dos命令执行bat文件_dos命令tree图文教程,树形图形显示路径目录文件和文件夹...
  • python可以爬什么_Java可以像Python一样方便爬去世间万物
  • python二分法结果图_求助,python的二分法查找,按照视频上的代码写下来,结果运行错误...
  • vnpy怎么创建策略并回测_一步一步学vnpy
  • 2017-09-12 前端日报
  • Debian下无root权限使用Python访问Oracle
  • Druid 在有赞的实践
  • httpie使用详解
  • Linux Process Manage
  • Mocha测试初探
  • webpack4 一点通
  • 从tcpdump抓包看TCP/IP协议
  • 收藏好这篇,别再只说“数据劫持”了
  • 一道闭包题引发的思考
  • 做一名精致的JavaScripter 01:JavaScript简介
  • NLPIR智能语义技术让大数据挖掘更简单
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #pragma 指令
  • #Z2294. 打印树的直径
  • ${factoryList }后面有空格不影响
  • (C语言)二分查找 超详细
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四)c52学习之旅-流水LED灯
  • (一)基于IDEA的JAVA基础1
  • (转)创业家杂志:UCWEB天使第一步
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .aanva
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET CLR Hosting 简介
  • .net core控制台应用程序初识
  • .net 微服务 服务保护 自动重试 Polly
  • .NET处理HTTP请求
  • .NET开源快速、强大、免费的电子表格组件
  • /dev/sda2 is mounted; will not make a filesystem here!
  • @DataRedisTest测试redis从未如此丝滑
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @SentinelResource详解
  • [20171113]修改表结构删除列相关问题4.txt