实验一 基本语法及运算
实验目的:掌握实用软件(如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()