描述
附件文件为某股票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('请输入正确的选项')
当然,按照题目要求这样写是没有问题的,但是如果想要输出关于一支股票的更多的信息,建议就不要用字典了,用列表切片的方式更容易实现。(新人,首发,各位大佬多多指教)