小编就是学理科的,上了大学之后还是学的理科,总是会用到各种各样的公式,小编有时候也在想,上了大学之后总是有那么多的书籍,它的书写的又不怎么样,看又看不到,上课老师也只是那样讲讲书上的知识点,大学不是高中,你会就会,不会就不会,根本找不出那么多的什么高考必刷题呀或者高考帮,,呜呜呜,于是小编就想着用自己的业余爱好看看能不能弄出来一个程序,以后帮助小编的学习,我在刷题的时候直接输入数据,那么程序就会自动的给出答案。。。。。。。。。可是小编也只是个程序员啊,不是学霸,。。。会编程只是说小编喜欢和电脑交流,并且能够听得懂计算机的语言,而不是说听懂计算机说话就意味着小编就彻底了解牛顿啊。。。所以小编给出的这个程序只是说辅助你编写属于自己的理工词典

#这个的特点就是不能读取公式处理过的单元格
#这个的下面还需要输入相应的自己定义的公式,必须在这个界面里面
import xlrd,xlwt
from matplotlib import pyplot as plt
import numpy as np
import matplotlib.pyplot as plt
#这个里面就是为了我后面的所有的数据做准备的,它就负责一个接受一次性数据这个文件里面的数据
def zongchuli():
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('My Sheet')
    a, b = map(int, input('总体的从第几行到第几行:').split())
    a1, b1 = map(int, input('总体的从第几列到第几列:').split())
    # 用这个公式的时候必须先确认好这个自己就是按照一行一行的复制的
    with open('一次性数据', 'r', encoding='utf-8') as f:
        str = f.read()
        f = str.split('\n')
    print("你刚刚在那个一次性文件里面是一行行的输入的数据还是一列列的输入数据")
    k1=input("请回答行还是列")
    if k1=="行":
        hang(worksheet,a, b ,a1,b1)
    else:
        lie(worksheet,a, b ,a1,b1)
#按行黏贴的就用这个,这个以后也不需要自己看,这个属于后台处理的,处理好了之后就把文件保存到一次性源文件
def hang(worksheet,a, b ,a1,b1):
    k = 0
    for j in range(a1, b1 + 1):  # 这个是行
        # 这里的这个range原来只看前面的那个0而不看后面的那个k1,相当于k-1
        for i in range(a, b + 1):  # 这个是列
            worksheet.write(j, i,f[k] )
            k=k+1
    workbook.save('一次性源文件.xls')
#用这个公式的时候必须先确认好这个自己就是按照一列一列的复制的
#按列黏贴的就用这个,这个以后也不需要自己看,这个属于后台处理的,处理好了之后就把文件保存到一次性源文件
def lie(worksheet,a, b ,a1,b1):
    k = 0
    for i in range(a, b + 1):  # 这个是列
        for j in range(a1, b1 + 1):
            worksheet.write(j,i,f[k])
            k=k+1
    workbook.save('一次性源文件.xls')




















#这个里面就是开始对自己在下面输入的公式进行计算
#每次用的时候一定要记得下面的是计算,那么肯定是需要输入公式的,这个公式没有办法只能先在下面里面输入然后再运行
#它会将经过自己输入的公式再给它传到最后的一次性最终文件这个文件里面然后自己就只管复制到一次性源文件里面---需要手动
#用的时候没有任何的代号---只能类似于这样 k3[0] + k3[1]
def jisuan(gongshi):
    data1 = xlrd.open_workbook('一次性源文件.xls')
    sheet1 = data1.sheets()[0]
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('一次性我创建的')
    # k=input()
    a, b = map(int, input('总体的从第几行到第几行:').split())
    a1, b1 = map(int, input('总体的从第几列到第几列:').split())
    # k1=float(k)
    # k1=int(k1)
    k3 = []
    for j in range(a1, b1 + 1):
        # 这里的这个range原来只看前面的那个0而不看后面的那个k1,相当于k-1
        for i in range(a, b + 1):
            k2 = sheet1.cell(j, i).value  # 读取sheet1中第2行第2列的值
            #这就编程了一个处理的一行
            k3.append(k2)
        # 在这里输入相应的公式
        #gongshi = k3[0] + k3[1]  # + k3[2] + k3[3]
        worksheet.write(j, i + 1, gongshi)  # Outputs 2
        k3 = []  # 清空k3
    workbook.save('一次性最终文件.xls')
    # print(k3[0]+k3[1]+k3[2]+k3[3])
    # print("the value of sheet1_cell_4_2:", k3)
#这个用的时候要先在a里面输入那个需要直方的数据
#在那个bins里面需要自己输入范围,这个倒是可以不用固定的
#这个用的时候很灵活的,现在自己先不给这个分类
#这个直方图目前自己还不知道该怎么自己设置那个y周的坐标,好像和那个这些图一样是不需要设置的,它自己会变的
def zhifangtu():
    #这个直方图一直有问题,用不了
    '''data1 = xlrd.open_workbook('一次性源文件.xls')
    sheet1 = data1.sheets()[0]
    a, b = map(int, input('总体的从第几行到第几行:').split())
    a1, b1 = map(int, input('总体的从第几列到第几列:').split())'''
    # k1=float(k)
    # k1=int(k1)
    '''
    k3=[]
    for j in range(a1, b1 + 1):
        # 这里的这个range原来只看前面的那个0而不看后面的那个k1,相当于k-1
        for i in range(a, b + 1):
            k2 = sheet1.cell(j, i).value  # 读取sheet1中第2行第2列的值
            k3.append(k2)'''
    a = input()
    k3 = a.split()
    #a1 = np.array(k3)
    a = input()
    c = a.split()
    plt.hist(k3, bins=c)
    plt.title("histogram")
    plt.show()
#这些图的折线s数量是需要自己来限制的
def zhexiantu():
    '''
    # y原来这个有遍历的作用,不行要自己还一个个的进行f[i]这样的
    y1 = [2, 3, 4, 5, 8, 9, 4]#花括号还是中括号都不受限制
    y2 = [21, 32, 14, 15, 18, 19, 14]
    #这里那个第二个len(y1)需要减一是因为那个零也属于一个点'''
    a = input()
    y1 = a.split()
    a = input()
    y2 = a.split()
    x = np.linspace(0, len(y1) - 1, len(y1))
    plt.plot(x, y1, c='Black', marker='o', lw=3)  # 这里还可以用r代替那个black,lw为粗细
    plt.plot(x, y2, c='#526922', marker='*')
    plt.show()