E d u c o d e r 作 业 Educoder作业 Educoder】问题求解——列表

T 1 T1 T1 计算标准差

很简单的模拟

import math

L = [101, 25, 38, 29, 108, 121]
########## Begin ##########
mu = sum(L) / len(L)
sg = 0
for i in L :
    sg += (i - mu) ** 2 / len(L)
sigma = math.sqrt(sg)
########## End ##########
print('%.2f' % sigma)

T 2 T2 T2 计算向量内积

z i p zip zip操作,就是把两个列表整合到一起,存 p a i r pair pair类型,长度为较短列表的长度,多余部分舍弃。

X = [1.2, 2.3, 3.4, 4.5, 5.6]
Y = [6.5, 5.4, 4.3, 3.2, 2.1]
########## Begin ##########
XdotY = 0
for x, y in zip(X, Y) :
    XdotY += x * y
########## End ##########
print('%.2f' % XdotY)

T 3 T3 T3 查找学生信息

f l a g flag flag的用法很有趣,就是立一个旗子,表示一下到底有没有输出

ID    = [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008]
name  = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十']
grade = [100, 87, 65, 58, 78, 65, 69, 85]
a = eval(input())
b = eval(input())
########## Begin ##########
l = len(name)
flag = False
for i in range(l) :
    if grade[i] >= a and grade[i] <= b :
        flag = True
        print(ID[i], name[i])
if flag == False :
    print('未找到')
########## End ##########

T 4 T4 T4 判断水仙花数

C + + C++ C++中的拆位不太一样, P y t h o n Python Python有骚操作,如代码

x = int(input())
########## Begin ##########
y = x
if x < 100 or x > 999 :
    print('False')
else :
    L = [int(i) ** 3 for i in str(x)]
    if sum(L) == x :
        print('True')
    else :
        print('False')
########## End ##########

有个坑点,就是水仙花数是三位数

T 5 T5 T5 寻找自幂数

跟上个题没啥区别的

n = int(input())
########## Begin ##########
a = 10 ** (n - 1)
if n == 1 :
    a = 0
b = 10 ** n
for x in range(a, b) :
    L = [int(i) ** n for i in str(x)]
    if (sum(L) == x) :
        print(x)
########## End ##########

T 6 T6 T6 绘制钟形曲线

关于 p l o t plot plot的操作我们之前博客里提到过,不赘述。这个题就是考虑想画出曲线的话, p l t . p l o t ( x , y , ′ r − ′ ) plt.plot(x,y,'r-') plt.plot(x,y,r)里面 x x x y y y必须都是列表才行。

import matplotlib.pyplot as plt
import math
########## Begin ##########
X = []
Y = []
a, b, n = -3, 3, 21
delta = (b - a) / (n - 1)
x = a
while x <= b :
    y = (math.sqrt(2 * math.pi) ** (-1)) * math.exp(-x * x / 2)
    X.append(x)
    Y.append(y)
    x += delta
########## End ##########

#以下代码用于打印结果
for i in range(len(X)):
    if round(X[i],2)==-0.0:
        X[i]=0
    print('%.2f\t%.2f' % (X[i],Y[i]))

#以下代码用于绘制图形
plt.plot(X,Y,'bo-')
plt.grid('on')
plt.axis([-3, 3, 0, 0.4])
plt.show()
plt.savefig( 'src/step6/student/pic.png' )
plt.close()

T 7 T7 T7 绘制大西洋中脊剖面轮廓

同上

import matplotlib.pyplot as plt
import math
########## Begin ##########
D, C, u = 2.5, 0.11, 50
d, dlt = 1200, 200
x = -d
X, Y = [], []
while x <= d :
    y = -(D + C * math.sqrt(10 * abs(x) / u))
    X.append(x)
    Y.append(y)
    x += dlt
########## End ##########
plt.plot(X, Y, 'r-')
plt.axis([-d, d, -4.2, 0])
plt.show()
#以下代码用于打印结果
for i in range(len(X)):
    print('%5s\t%.2f' % (int(X[i]),Y[i]))
    
#以下代码用于保存图片
plt.savefig( 'src/step7/student/pic.png' )
plt.close()

T 8 T8 T8 线性拟合

注意读题就行,具体和上面两个题没区别的

import matplotlib.pyplot as plt
X = [0,  0.5,   1,   1.5,   2,  2.5,   3,   4,  4.5,    5]
Y = [0,   18,  20,  39.5,  60,   50,  68,  77,  100,  110]
########## Begin ##########
n = len(X)
Sx, Sy = sum(X), sum(Y)
Sxy = 0
Sxx = 0
for x, y in zip(X, Y) :
    Sxy += x * y
    Sxx += x * x
    plt.plot(x, y, 'bo')
k = (Sx * Sy - n * Sxy) / (Sx * Sx - n * Sxx)
b = (Sx * Sxy - Sxx * Sy) / (Sx * Sx - n * Sxx)
Px = [0, 5]
Py = [b, 5 * k + b]
plt.plot(Px, Py, 'r-')
plt.show()
########## End ##########
print('y = %.3fx + %.3f' % (k,b))
plt.savefig( 'src/step8/student/pic.png' )
plt.close()
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐