0
点赞
收藏
分享

微信扫一扫

python学习之股票查询程序

和谐幸福的人生 2022-04-20 阅读 72
python

学习python后,做的最久的作业,纪念一下

                           

 

 话不多说,直接上代码

f = open("股票数据", "r")
e = f.read()                # 把内容取到内存
a = "".join(e).split("\n")  # 把e中的内容合并,并以换行符为分隔,形成列表
a_new = []
for i in a:
    g = i.split(",")        # 把a列表内的每一行分成小列表,(以“,”分隔字符串)
    a_new.append(g)         # 把新形成的每一行小列表添加到a_new列表内

while True:                                        # 无限循环
    data = input("请输入需要查询的信息:").strip()  # 删除输入内容两边的空格
    print(a_new[0])                                # 打印第一行标签
#1.模糊搜索
    if data in e:                    # 判断输入的数据是否在文件内
        times = e.count(data)        # 计算文件内有多少个数据
        for i in a:                  # 依次打印列表a的每一行
            if data in i:            # 判断输入的数据是否在列表的行内
                print(i.split(","))  # 如果在就打印该字符串所形成的列表
        print(f"找到{times}处。")
#2.根据判断条件搜索
    elif ">" in data:
        b = data.index(">")                         # 根据符号获取该符号在输入数据中的位置
        front = data[:b]                            # 根据符号在输入数据中的位置,提取出符号左边的数据
        behind = data[b+1:]                         # 根据符号在输入数据中的位置,提取出符号右边的数据
        c = a_new[0].index(front)                   # 根据符号左边的数据获取在列表a_new第一个标题小列表中对于字符串所在的位置
        i_count = []
        for i in a_new[1:]:                         # 从1位置开始循环列表a_new内的小列表
            if "%" in i[c] or "万" in i[c]:         # 判断“%” 或者 “万” 是否在i[c]内
                c_new = float(i[c][:-1])            # 如果在,赋值c_new = 去掉i[c]字符串的最后一位后转为小数
                behind_new = int(behind[:-1])       # 如果在,赋值behind_new = 去掉behind字符串的最后一位后转为整数
            elif "损" in i[c] or "-" in i[c]:       # 并列判断
                c_new = -100
                behind_new = int(behind[:-1])
            elif "亿" in i[c]:                      # 并列判断
                c_new = (float(i[c][:-1])) * 10000  # 如果在,赋值c_new = 去掉i[c]字符串的最后一位后转为小数,再乘10000(恢复亿的意思)。
                behind_new = int(behind[:-1])
            else:                                   # 以上都不是的情况下
                c_new = float(i[c])                 # 直转小数
                behind_new = int(behind)            # 直转整数
            if c_new > behind_new:                  # 在上一个if-else选择一个通过后,再到这一个if判断
                i_count.append(i)                   # 为了计数,把通过该if的i添加到列表i_count
                print(i)
        print(f"找到{len(i_count)}处。")             # 计算列表内有多少数据  (字符串或者列表都算)
    elif "<" in data:                               # 同上
        b = data.index("<")
        front = data[:b]
        behind = data[b+1:]
        c = a_new[0].index(front)
        i_count = []
        for i in a_new[1:]:
            if "%" in i[c] or "万" in i[c]:
                c_new = float(i[c][:-1])
                behind_new = int(behind[:-1])
            elif "损" in i[c] or "-" in i[c]:
                c_new = -100
                behind_new = int(behind[:-1])
            elif "亿" in i[c]:
                c_new = (float(i[c][:-1])) * 10000
                behind_new = int(behind[:-1])
            else:
                c_new = float(i[c])
                behind_new = int(behind)
            if c_new < behind_new:
                i_count.append(i)
                print(i)
        print(f"找到{len(i_count)}处。")
    elif data not in e:                            # 如果输入的数据不在文件内
        print("未找到你需要的信息,请重新输入!")

 做的中间各种奇奇怪怪的报错,做为小白的我,差点砸键盘!!!

然后就是百度啊百度,然后就找到了这个交流的平台,解决了我的挺多疑惑的,真棒!!!

最后,加油!

加油!

加油!!

举报

相关推荐

0 条评论