zoukankan      html  css  js  c++  java
  • 老男孩python学习阶段性作业- 股票信息查询程序

    程序实现功能

    功能一:程序启动后,给用户提供查询接口,允许用户重复查股票行情信息;
    功能二:允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来;
    功能三:允许按股票价格、涨跌幅、换手率这几列来筛选信息,
    比如输入“价格>50”则把价格大于50的股票都打印,输入“市盈率<50“,则把市盈率小于50的股票都打印,不用判断等于。

    #!/user/bin/env python
    # -*- coding:utf-8 -*-
    
    data_list = {}  # 定义一个空字典存文件中的内容
    f = open(file='stock_data.txt', encoding='UTF-8', mode='r')
    data_title = f.readline().strip().split(',')  # 将第一行设置为每次打印的标题行
    for item in f:
        item = item.strip().split(',')  # 将每行数据处理成一个列表,以逗号分割
        data_list[item[2]] = item  # 将名称列作为字典的键,将每行数据作为值
    f.close()
    select_list = ['最新价', '涨跌幅', '换手率']  # 定义可查询范围
    while True:
        match_count = 0  # 定义一个计数字段记录匹配数
        flag = True  # 定义一个标识字段,控制匹配数的输出
        input_content = input('股票查询接口:').strip()
        if len(input_content) == 0:  # 判断用户输入内容,若为空,跳出该次循环(解决空字符永远在任一字符串中的问题)
            continue
        print(data_title)
        for i in data_list:  # 进行模糊匹配查询
            if input_content in i:
                print(data_list[i])
                match_count += 1
        if '>' in input_content and '=' not in input_content:  # 进行大于查询
            input_name, input_value = input_content.strip().split('>')
            input_name = input_name.strip()
            input_value = float(input_value.strip())
            if input_name in select_list:
                input_index = data_title.index(input_name)
                for v in data_list.values():
                    if float(v[input_index].strip('%')) > input_value:
                        print(v)
                        match_count += 1
            else:
                flag = False
        elif '<' in input_content and '=' not in input_content:  # 进行小于查询
            input_name, input_value = input_content.strip().split('<')
            input_name = input_name.strip()
            input_value = float(input_value.strip())
            if input_name in select_list:
                input_index = data_title.index(input_name)
                for v in data_list.values():
                    if float(v[input_index].strip('%')) < input_value:
                        print(v)
                        match_count += 1
            else:
                flag = False
        elif '=' in input_content:
            flag = False
        if flag:
            if match_count > 0:
                print('找到%s条' % (match_count,))
            else:
                print('未找到符合查询条件的结果!')
        else:
            print('不在可查询范围内!')
    
  • 相关阅读:
    ASP.NET SignalR HubPipelineModule
    MongoDB新版本特性
    Xamarin向iOS和Android引入C# Async支持
    Redis开源文档《Redis设计与实现》[转]
    WCF的追踪分析工具——SvcPerf
    Windows Azure移动服务更新,支持Android、活动目录和更多语言,并支持在东亚地区部署服务
    社区网站系统 jsGen
    单元测试同时支持 NUnit/MSTest
    .NET的微型Web框架 Nancy
    通过二维码登录(CSC模式)
  • 原文地址:https://www.cnblogs.com/zhanglongfei/p/11714901.html
Copyright © 2011-2022 走看看