python的常用数组工具

写在前面:

疫情期间在家无聊,写了一个简易的常用数组工具
功能模块主要是排序/计算
当然排序可以选择升序及降序排列
为了方便用户,加入了删除/查找/插入等额外的功能
计算模块则包括了求和/求积/标准差以及百分位数等功能
我觉得可以覆盖一些常用的数组处理
如果你不想用一些复杂的大型软件,这个会是一个很好的小工具~
对于软件的交互,我还是设计的比较简便的
全程敲数字键就ok了,很好上手!

编辑后:

在之前的基础上根据意见加入了文件读取的功能,用户可以直接在指定文件夹下新建一个data.txt来进行计算,这个在数据量大的情况下免去了一个个手动输入的麻烦,功能是一样的

from functools import reduce
import numpy
import os
import sys
for k in range(100):
    print('欢迎使用常用数组工具')
    select = input('请选择操作模式:\n1:手动输入\n2:读取文件\n请输入对应功能代码:')
    if select == '1':
        print('手动输入模式:\n1:排序\n2:计算\n3:退出')
        a = input('请输入您想要使用的功能代码:')
        # 数据的正反向排序
        if a == '1':
            cishu = input('请输入您想排序的数值个数:')
            cishu2 = int(cishu)
            data = []
            for i in range(cishu2):
                shuju = input('请输入您想排序的第%d个数值:' % (i+1))
                data.append(shuju)
            reshape = [int(i) for i in data]
            b = input('您想要升序还是降序\n1:升序\n2:降序\n请输入您想要使用的功能代码:')
            if b == '1':
                result = sorted(reshape)  # 正向排序函数
                print('输入数组为:', reshape)
                print('排序后数组为:', result)
            elif b == '2':
                result = sorted(reshape)  # 正向排序函数
                result.reverse()   # 反向排序函数
                print('输入数组为:', reshape)
                print('排序后数组为:', result)
            else:
                print('指令错误,请检查后重试')
            for p in range(100):
                c = input('是否需要继续操作\n1:插入\n2:修改\n3:删除\n4:退出\n5:查询\n请输入您想要使用的功能代码:')
                if c == '1':
                    xindata = input('请输入您想插入的值:')
                    weizhi = input('请输入您想插入的位置:')
                    weizhi1 = int(weizhi)
                    reshape.insert(weizhi1-1, xindata)
                    print(reshape)
                    reshape1 = [int(l) for l in reshape]
                    p = input('您想要升序还是降序,分别以1/2表示:')
                    if p == '1':
                        result2 = sorted(reshape1)  # 正向排序函数
                        print(result2)
                    elif p == '2':
                        result2 = sorted(reshape1)  # 正向排序函数
                        result2.reverse()  # 反向排序函数
                        print(result2)
                    else:
                        print('指令错误,请检查后重试')
                elif c == '2':
                    xin = input('请输入您想修改的值:')
                    di = input('请输入您想修改值的所在位置:')
                    di1 = int(di)
                    xin2 = int(xin)
                    reshape[di1-1] = xin2
                    s = input('您想要升序还是降序,分别以1/2表示:')
                    if s == '1':
                        result = sorted(reshape)  # 正向排序函数
                        print('输入数组为:', reshape)
                        print('排序后数组为:', result)
                    elif s == '2':
                        result = sorted(reshape)  # 正向排序函数
                        result.reverse()  # 反向排序函数
                        print('输入数组为:', reshape)
                        print('排序后数组为:', result)
                    else:
                        print('指令错误,请检查后重试')
                elif c == '3':
                    xin3 = input('请输入您想删除的数据位置:')
                    xin4 = int(xin3)
                    reshape3 = reshape.pop(xin4-1)
                    g = input('您想要升序还是降序,分别以1/2表示:')
                    if g == '1':
                        result = sorted(reshape)  # 正向排序函数
                        print('输入数组为:', reshape)
                        print('排序后数组为:', result)
                    elif g == '2':
                        result = sorted(reshape)  # 正向排序函数
                        result.reverse()  # 反向排序函数
                        print('输入数组为:', reshape)
                        print('排序后数组为:', result)
                    else:
                        print('指令错误,请检查后重试')
                elif c == '4':
                    break
                elif c == '5':
                    gg = input('请输入您想要查询的具体数值:')
                    xin = [str(i) for i in reshape]
                    if gg in xin:
                        zhi = xin.index(gg)
                        print('您查询的数值的首次出现位置为:', (zhi+1))
                        juti = [i for i, x in enumerate(xin) if x == gg]  # enumerate是遍历函数,产生一个list,数据类型为int
                        juti1 = [i + 1 for i in juti]
                        print('您查询的数值的所有出现位置为:', juti1)
                    if gg not in xin:
                        print('列表无查询项,请重试')

                else:
                    print('指令错误,请检查后重试')
        elif a == '3':
            exit()
        elif a == '2':
            xuan = input('请选择您想要进行的计算\n1:求和\n2:求积\n3:平均值\n4:标准差\n5:百分位数\n请输入您想要使用的功能代码:')
            if xuan == '1':
                one = input('请输入您想要计算的数值个数:')
                cishu3 = int(one)
                data2 = []
                for i in range (cishu3):
                    two = input('请输入第%d个数值:' % (i+1))
                    data2.append(two)
                reshape2 = [int(i) for i in data2]
                print('输入列表为:', reshape2)
                print('列表元素之和为:', sum(reshape2))  # 直接列表元素求和
            elif xuan == '2':
                three = input('请输入您想要计算的数值个数:')
                cishu4 = int(three)
                data3 = []
                for i in range(cishu4):
                    four = input('请输入第%d个数值:' % (i+1))
                    data3.append(four)
                reshape3 = [int(i) for i in data3]
                print('输入列表为:', reshape3)
                jie = reduce(lambda x, y: x * y, reshape3)  # reduce函数的顺序累积
                print('列表元素乘积:', jie )
            elif xuan == '3':
                five = input('请输入您想要计算的数值个数:')
                cishu5 = int(five)
                data4 = []
                for i in range(cishu5):
                    four = input('请输入第%d个数值:' % (i + 1))
                    data4.append(four)
                reshape4 = [int(i) for i in data4]
                print('输入列表为:', reshape4)
                ping = numpy.average(reshape4)  # numpy中的average函数
                print('列表元素平均值:', ping)
            elif xuan == '4':
                six = input('请输入您想要计算的数值个数:')
                cishu5 = int(six)
                data5 = []
                for i in range(cishu5):
                    four = input('请输入第%d个数值:' % (i + 1))
                    data5.append(four)
                reshape4 = [int(i) for i in data5]
                print('输入列表为:', reshape4)
                cha = numpy.std(reshape4)  #numpy中的std函数
                print('列表元素标准差为:', cha)
            elif xuan == '5':
                seven = input('请输入您想要计算的数值个数:')
                cishu6 = int(seven)
                data6 = []
                for i in range(cishu6):
                    five = input('请输入第%d个数值:' % (i + 1))
                    data6.append(five)
                a = [int(i) for i in data6]
                aa = input('请输入您想要的百分位:')
                aaa = int(aa)
                baifen = numpy.percentile(a, aaa)
                print('列表的%d%%位数为:' % aaa, baifen)

            else:
                print('指令错误,请检查后重试!')
        else:
            print('指令错误,请检查后重试!')
    if select == '2':
        print('文件读取模式:\n1:排序\n2:计算\n3:退出')
        a = input('在将需读取的名为data.txt的文件放入当前文件夹后,输入您想要使用的功能代码:')
        filename = 'data.txt'
        if a == '1':
            if os.path.exists(filename):
                with open(filename, 'r') as file_to_read:
                    lines = file_to_read.read()
                datamat = lines.split()
                changdu = len(datamat)
                reshape = [int(i) for i in datamat]
                datamat2 = numpy.array(reshape)
                print('当前文件内数据量:%d' % changdu)
                b = input('您想要升序还是降序\n1:升序\n2:降序\n请输入您想要使用的功能代码:')
                if b == '1':
                    result = sorted(datamat2)  # 正向排序函数
                    print('输入数组为:', datamat2)
                    print('排序后数组为:', result)
                elif b == '2':
                    result = sorted(datamat2)  # 正向排序函数
                    result.reverse()  # 反向排序函数
                    print('输入数组为:', datamat2)
                    print('排序后数组为:', result)
                else:
                    print('指令错误,请检查后重试!')
            else:
                print('data.txt在当前目录下不存在,请检查后重试!')
        elif a == '2':
            if os.path.exists(filename):
                with open(filename, 'r') as file_to_read:
                    lines = file_to_read.read()
                datamat = lines.split()  # 空格括号内空参数
                changdu = len(datamat)
                reshape = [int(i) for i in datamat]
                datamat2 = numpy.array(reshape)
                print('当前文件内数据量:%d' % changdu)
                xuan = input('请选择您想要进行的计算\n1:求和\n2:求积\n3:平均值\n4:标准差\n5:百分位数\n请输入您想要使用的功能代码:')
                if xuan == '1':
                    print('输入列表为:', datamat2)
                    print('列表元素和:', sum(datamat2))
                elif xuan == '2':
                    print('输入列表为:', datamat2)
                    jie = reduce(lambda x, y: x * y, datamat2)  # reduce函数的顺序累积;lambda是匿名函数
                    print('列表元素乘积:', jie)
                elif xuan == '3':
                    print('输入列表为:', datamat2)
                    print('列表元素平均值:', numpy.average(datamat2))
                elif xuan == '4':
                    print('输入列表为:', datamat2)
                    print('列表元素标准差:', numpy.std(datamat2))
                elif xuan == '5':
                    aa = input('请输入您想要的百分位:')
                    aaa = int(aa)
                    print('列表的%d%%位数为:' % aaa, numpy.percentile(datamat2, aaa))
                else:
                    print('指令错误,请检查后重试!')
            else:
                print('data.txt在当前目录下不存在,请检查后重试!')
        else:
            print('指令错误,请检查后重试!')
    else:
        print('指令错误,请检查后重试!')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python是一种广泛使用的编程语言,有很多常用的软件和工具可以帮助开发者更高效地使用Python。以下是一些常用Python软件和工具: 1. Anaconda:Anaconda是一个Python发行版,它包含了Python解释器以及许多常用的科学计算和数据分析库。它还提供了一个方便的包管理系统,可以轻松地安装、更新和管理Python包。 2. PyCharm:PyCharm是一款功能强大的Python集成开发环境(IDE),提供了代码编辑、调试、测试等一系列开发工具。它支持代码自动补全、语法高亮、代码重构等功能,可以大大提高开发效率。 3. Jupyter Notebook:Jupyter Notebook是一个交互式的笔记本环境,可以在浏览器中编写和运行Python代码,并且可以将代码、文本和图像等内容整合在一起形成可分享的文档。它非常适合进行数据分析、可视化和机器学习等任务。 4. Visual Studio Code:Visual Studio Code是一个轻量级的代码编辑器,支持多种编程语言,包括Python。它具有丰富的插件生态系统,可以根据需要安装各种扩展,提供更多的功能和工具。 5. TensorFlow:TensorFlow是一个开源的机器学习框架,可以用于构建和训练各种机器学习模型。它提供了丰富的API和工具,可以帮助开发者快速实现复杂的机器学习算法。 6. NumPy:NumPy是Python常用的数值计算库,提供了高效的多维数组对象和相关的数学函数。它是许多其他科学计算库的基础,可以用于处理大规模的数据集和进行各种数值计算。 7. Pandas:Pandas是一个数据处理和分析库,提供了高效的数据结构和数据操作工具。它可以用于读取、处理和分析各种类型的数据,包括CSV文件、Excel文件、数据库等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值