老男孩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('不在可查询范围内!')

posted on 2019-10-21 17:56  傲慢小羽  阅读(1017)  评论(0编辑  收藏  举报

导航