python-字典附加题3- 股票查询

要求:
链接:https://pan.baidu.com/s/1VVLVrwLfHMuDCE8xLhHV8w 提取码:byhy

解压后得到的是一个股票代码文件,记录了中国所有的股票名称和代码。
请写一个股票信息查询程序,从文件加载数据, 可以让使用者 循环多次 查询股票信息。
每次查询时,提示 请输入要查询的股票名称或代码:

当用户输入股票代码(6位全是数字)时,打印出对应的 股票名称和代码
当用户输入股票名称(不全是数字)时,打印出对应的 股票名称和代码

学习总结:
1.# 把字典的key与val互换
new_listDic = {v : k for k, v in listDic.items()}

'''
每次查询时,提示 请输入要查询的股票名称或代码:

当用户输入股票代码(6位全是数字)时,打印出对应的 股票名称和代码

当用户输入股票名称(不全是数字)时,打印出对应的 股票名称和代码
'''
with open('stock.txt',encoding='utf8') as f:
    infoList = f.read().splitlines()
listDic = {}

def getname(num):
    for info in infoList:
        # # 去除左右空格
        # info = info.strip()

        # 去除空行
        if not info:
            continue
        # 切割
        infoSp = info.split('|')

        infoK = infoSp[0].strip()
        infoV = infoSp[-1].strip()
        # print(infoV)
        # 将列表的值 加到 字典中
        if infoK not in listDic:
            listDic[infoK] = infoV
    # print(listDic)
    if num in listDic:
        # print('不在')
        print(f'{num}:{listDic[num]}')
    elif num in listDic.values():
        # 把字典的key与val互换
        new_listDic = {v : k for k, v in listDic.items()}

        print(f'{new_listDic[num]}:{num}')
    else:
        print('不在')

            # print(f'{listDic[num]}:{infoV}')

while True:
    num = input('请输入要查询的股票名称或代码:')
    getname(num)

优化代码:提高效率
上面的代码的问题:查询字典中的数据,不应该去遍历它,遍历查询效率很低。

    infoList = f.read().splitlines()
listDicName = {}
listDicCode = {}

def getname(num):
    for info in infoList:
        # # 去除左右空格
        # info = info.strip()

        # 去除空行
        if not info:
            continue
        # 切割
        infoSp = info.split('|')
        '''
        优化代码:提高效率
        '''
        infoKeys = infoSp[0].strip()
        infoValues = infoSp[-1].strip()
        
        listDicName[infoKeys] = f'{infoKeys}:{infoValues}'
        listDicCode[infoValues] = f'{infoKeys}:{infoValues}'
    
    if num.isdigit():
        # 一定要写全6位股票代码
        if len(num) < 6:
            print('请写全6位股票代码')
            # continue
        elif num in listDicCode:
            print(listDicCode[num])
        else:
            print('找不到该股票代码')
        # 如果不全是数字,作为股票名称处理
    else:
        if num in listDicName:
            print(listDicName[num])
        else:
            print('找不到该股票名称')

while True:
    num = input('请输入要查询的股票名称或代码:')
    num = num.strip()
    getname(num)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuerwen_python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值