老男孩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('不在可查詢范圍內!')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM