python 股票信息分析

描述‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

附件文件为某股票2019年部分数据,根据要求进行统计分析:‪

1、若输入为‘最高价’:

再输入一个正整数n‪按照示例格式每行依次输出最高价由高到低的前n天的日期和当天最高价,行内各数据间用空格分隔‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

2、若输入为‘开盘价’:

再输入一个正整数m‪按照示例格式每行依次输出开盘价由低到高的前m天的日期和当天开盘价,行内各数据间用空格分隔‪‬

3、若输入为‘成交金额’:‪再输入一个正整数num‪‬输出成交金额最高的num天的成交额

‪‬4、若输入为‘日期’:再输入一个日期‪输出当天的股票信息,各数据间用空格分隔‪‬‪‬‪

示例表中数据仅供作为格式参考,数据为模拟值‪‬‪‬‪

因为该文件是csv文件,而python中就有csv这个模块。个人认为直接引用这个模块会比较简单。

import csv 

def maxprice():
    n = input('请输入你想要查询的排名:')
    a = []
    b = []
    print('最高价最高的前%s名:'%n)
    with open('gpxx\China Minsheng Bank(1).csv','r') as csv_file:
        csv_reader = csv.DictReader(csv_file)
        for line in csv_reader:
            a.append(line['日期'])
            b.append(float(line['最高价']))
        m = dict(zip(a,b))
        ls=sorted(m.items(),key=lambda x:x[1],reverse=True)
        for (key,value) in ls[:int(n)]:
            print('%s %.2f元'%(key,value))

def openingprice():
    n = input('请输入你想要查询的排名:')
    a = []
    b = []
    print('开盘价最低的前%s名:'%n)
    with open('gpxx\China Minsheng Bank(1).csv','r') as csv_file:
        csv_reader = csv.DictReader(csv_file)
        for line in csv_reader:
            a.append(line['日期'])
            b.append(float(line['开盘价']))
        m = dict(zip(a,b))
        ls=sorted(m.items(),key=lambda x:x[1])#sorted函数默认为升序排序
        for (key,value) in ls[:int(n)]:
            print('%s %.2f元'%(key,value))

def cjje():
    n = input('请输入你想要查询的天数:')
    a = []
    with open('gpxx\China Minsheng Bank(1).csv','r') as csv_file:
        csv_reader = csv.DictReader(csv_file)

        for line in csv_reader:
            a.append(float(line['成交金额']))
        c = sorted(a,reverse=True)#因为a为列表,故sorted无需用key来指定规则
        b = sum(c[:int(n)])
        print('成交金额最多的%s天成交额为%d元'%(n,b))

def date():
    n = input('请输入要查找的日期:')
    with open('gpxx\China Minsheng Bank(1).csv','r') as csv_file:
        csv_reader = csv.DictReader(csv_file)
    
        for line in csv_reader:
            if n==line['日期']:
                print('%s %s'%(line['名称'],line['股票代码']),line['开盘价'],line['最低价'],line['最高价'],line['收盘价'],line['成交金额'],'%s'%line['日期'])

while True:
    c = input('请输入以下查询的业务:(‘最高价’,‘开盘价’,‘成交金额’,‘日期’,‘退出’)')
    if c=='最高价':
        maxprice()
    elif c=='开盘价':
        openingprice()
    elif c=='成交金额':
        cjje()
    elif c=='日期':
        date()
    elif c=='退出':
        break
    else:
        print('请输入正确的选项')

当然,按照题目要求这样写是没有问题的,但是如果想要输出关于一支股票的更多的信息,建议就不要用字典了,用列表切片的方式更容易实现。(新人,首发,各位大佬多多指教)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值