数据统计与分析基础实验(一)Hebuter慎抄

实验一 基本语法及运算

实验目的:掌握实用软件(如python、Matlab、R等任选一种)的基本语法、基本数据类型的使用方法,掌握从键盘输入并运算基本类型的数据,熟练运用分支、循环等语句控制程序流程。

实验内容:

1、

编写程序,记录十名学生的信息,至少包括姓名、年龄、出生年、数据统计分析课程实验成绩,程序输出前n个学生的年龄平均值、数据统计分析课程实验成绩平均值,n为函数的输入参数。

2、找出1至999之间是13的倍数或者前两位数字是13的数字,输出这些数字,并统计有多少个。

3、编写成绩转化为绩点的函数,用98,93,89,73,66分别调用函数,生成对应绩点。

4、随机生成两个长为100且服从标准正态分布的向量,然后将两向量所有偶数位的数值对调,输出所有的4个向量(对调前的2个,对调后的2个)。

5、已知XYZ+YZZ=532,其中X、Y和Z为数字,编程求出X,Y和Z的值。

实验代码及实验结果:

1、

import numpy as np
import xlrd
stu_age = []
stu_score = []
stu_name = []
stu_year = []

data = xlrd.open_workbook('E:\数据分析与统计基础\实验\Project\exp1\student.xls')
table = data.sheets()[0]


def get():
    '''for i in range(10):
        x = str(input("请输入姓名:"))
        stu_name.append(x)
        x = int(input("请输入年龄:"))
        stu_age.append(x)
        x = int(input("请输入出生年:"))
        stu_year.append(x)
        x = float(input("请输入数据统计分析课程实验成绩:"))
        stu_score.append(x)'''
    for i in range(table.nrows):
        stu_name.append(str(table.cell_value(i, 0)))
        stu_age.append(int(table.cell_value(i, 1)))
        stu_year.append(int(table.cell_value(i, 2)))
        stu_score.append(int(table.cell_value(i, 3)))
    # print(stu_name)
    # print(stu_age)
    # print(stu_score)


def func(n):
    avg_age = np.mean(np.array(stu_age)[:n])
    avg_score = np.mean(np.array(stu_score)[:n])
    return avg_age, avg_score


def main():
    get()
    n = int(input("输入n:"))
    print("平均年龄为:%.4f" % func(n)[0])
    print("平均成绩为:%.4f" % func(n)[1])


if __name__ == '__main__':
    main()

2、

results = []


def main():
    for i in range(1, 1000):
        if i % 13 == 0:
            results.append(i)
        else:
            if (int(i / 10)) == 13:
                results.append(i)
    print("1至999之间是13的倍数或者前两位数字是13的数字:")
    print(results)
    print("共有%d个"%len(results))


if __name__ == '__main__':
    main()

3、

score_list = [98, 93, 89, 73, 66]


def score_trans(n):
    if n >= 90:
        return 4
    if 80 <= n < 90:
        return 3 + (n - 80) * 0.1
    if 70 <= n < 80:
        return 2 + (n - 70) * 0.1
    if 60 <= n < 70:
        return 1 + (n - 60) * 0.1
    else:
        return 0


def main():
    for i in range(len(score_list)):
        print("%d分对应的绩点为:%.1f"%(score_list[i],score_trans(score_list[i])))


if __name__ == '__main__':
    main()

 

4、

import numpy as np
import xlwt

np.random.seed(0)
vector_1 = np.random.normal(size=(1, 100))[0]
np.random.seed(1)
vector_2 = np.random.normal(size=(1, 100))[0]


def save(array, name):
    filename = xlwt.Workbook()  # 创建工作簿
    sheet = filename.add_sheet(u'sheet1', cell_overwrite_ok=True)  # 创建sheet
    [h, l] = array.shape  # h为行数,l为列数

    for i in range(h):
        for j in range(l):
            sheet.col(j).width = 1300
            sheet.write(i, j, float(array[i, j]))
    filename.save(name)


def main():
    print(vector_1)
    print(vector_2)
    save(np.array(vector_1).reshape(100,1), "vector1_origin.xls")
    save(np.array(vector_2).reshape(100,1), "vector2_origin.xls")
    for i in range(100):
        if i % 2 == 0:
            x = vector_2[i]
            vector_2[i] = vector_1[i]
            vector_1[i] = x
    print(vector_1)
    print(vector_2)
    save(np.array(vector_1).reshape(100,1), "vector1_modified.xls")
    save(np.array(vector_2).reshape(100,1), "vector2_modified.xls")


if __name__ == '__main__':
    main()

5、

results = []
results2 = []


def func():
    for i in range(533):
        for j in range(533):
            for k in range(533):
                if (i * j * k + j * k * k) == 532:
                    results.append((i, j, k))
    print("解集为:")
    print(results)


def func2():
    for x in range(0, 10):
        for y in range(0, 10):
            for z in range(0, 10):
                if x * 100 + y * 10 + z + y * 100 + z * 11 == 532:
                    results2.append((x, y, z))
    print("解集为:")
    print(results2)


if __name__ == '__main__':
    func2()

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ace2NoU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值