新手代码
题目
附件
第一题题解:
fp = open('sensor-data.txt', 'r')
# 用来记录光照那一列的值
data = []
num = 0
try:
while True:
# readline读取文件,每次循环记录光照部分数值
line = fp.readline()
temp = line.split(' ')
if line:
num += float(temp[len(temp) - 2])
data.append(float(temp[len(temp) - 2]))
else:
break
finally:
fp.close()
print("最大值为:{}".format(max(data)))
print("最大值为:{}".format(min(data)))
print("平均值为:{:.2f}".format(num / len(data)))
第二题题解:
data = str(input()).split(" ")
print("这是一辆{}年生产,型号是{}的{}牌汽车".format(data[0], data[1], data[2])) if len(data) == 3 else print("这是一辆{}年生产,型号是{}的{}牌汽车".format(data[0], data[1], '宝马'))
第三题题解:
n = int(input("输入整数n:"))
temp = 1
num = 0
for i in range(n):
num += 1/temp
temp += 2
print("保留三位小数后等于:{:.3f}".format(num))
第四题题解:
n = int(input("输入一小于12的整数n:"))
temp = '人生苦短我用python'
for i in range(n):
print(temp[i]+',', end=" ")
第五题题解(海龟turtle):
import turtle
import datetime
def drawGap(): # 绘制数码管间隔
# 抬起画笔
turtle.penup()
# 表示画笔向当前前进方向前进5个像素
turtle.fd(5)
def drawLine(draw): # 绘制单段数码管
drawGap()
# 落下画笔
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
def drawDigit(d): # 根据数字绘制七段数码管
drawLine(True) if d in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if d in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if d in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if d in [0, 2, 6, 8] else drawLine(False)
# 逆时针转向90°
turtle.left(90)
drawLine(True) if d in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if d in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if d in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawDate(date): # 绘制日期
turtle.pencolor("red")
for i in date:
if i == '-':
# 写文本,font是字体的参数,分别为字体名称,大小和类型
turtle.write("年", font=("Arial", 18, "normal"))
turtle.pencolor("green")
turtle.fd(40)
elif i == '=':
turtle.write("月", font=("Arial", 18, "normal"))
turtle.pencolor("blue")
turtle.fd(40)
elif i == '+':
turtle.write("日", font=("Arial", 18, "normal"))
else:
drawDigit(eval(i))
def main():
# 设置主窗体的大小和位置,依次窗口宽-窗口高-窗口左侧与屏幕左侧距离-窗口顶部与屏幕顶部距离
turtle.setup(800, 350, 200, 200)
turtle.penup()
turtle.fd(-350)
turtle.pensize(5)
# 格式化时间,%Y表示四位数年份,%m表示月份, %d表示那一天
drawDate(datetime.datetime.now().strftime('%Y-%m=%d+'))
# 隐藏画笔的turtle形状
turtle.hideturtle()
# 启动事件循环,使窗口保留不会自动关闭,必须是乌龟图形程序中的最后一个语句
turtle.mainloop()
main()
第六题题解(XRD谱图):
import matplotlib.pyplot as plt
# 读取数据
fp = open("XRD_AFO.csv", 'r')
line = fp.readline().strip("\n")
temp = line.split(",")
# 读取第一行,得到x轴,y轴标签
plt.xlabel(temp[0])
plt.ylabel(temp[1])
x = []
y = []
# 读取csv全部内容,从第二行开始,每次读取一行并记录
for i in fp.readlines():
i = i.strip("\n")
temp = i.split(",")
x.append(eval(temp[0]))
y.append(eval(temp[1]))
fp.close()
plt.figure("老师多给点分吧QAQ")
plt.plot(x, y, color='r', linewidth=1, linestyle='-')
# 保存图片
plt.savefig("xrd.jpg")
plt.show()
第七题题解:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import font_manager
# 设置字体
my_font = font_manager.FontProperties(fname="C:\WINDOWS\FONTS\SIMSUN.TTC")
fp = open('第七题.txt', 'r')
data = []
try:
while True:
# 去除换行符
line = fp.readline().strip('\n')
if line:
temp = line.split(',')
for i in range(len(temp)):
# 转成float型再append到data里面
temp[i] = float(temp[i])
data.append(temp)
else:
break
finally:
fp.close()
# 平均数
average1 = []
average2 = []
average3 = []
# 标准差
deviation1 = []
deviation2 = []
deviation3 = []
for i in range(3):
average1.append(np.mean(data[i]))
average2.append(np.mean(data[i + 3]))
average3.append(np.mean(data[i + 6]))
deviation1.append(np.std(data[i]))
deviation2.append(np.std(data[i + 3]))
deviation3.append(np.std(data[i + 6]))
x = ["软件学院", "计算机学院", "仪器学院"]
'''print(average)
for i in range(3):
for j in range(i, len(average), 3):
print(i)
if len(y_deviation[i]) == 3:
break
y_average[i].append(average[j])
y_deviation[i].append(deviation[j])
print(y_average[1])'''
# 设置条形图宽度
bar_width = 0.2
# 返回指定步长,之后用来在画图时确定每个条形图的横坐标
index = np.arange(len(x))
plt.figure(num="软件学院最强!", figsize=(10, 8))
# 条形图绘制
plt.bar(index-bar_width, average1, yerr=deviation1, width=bar_width, label="传感器A")
plt.bar(index, average2, yerr=deviation2, width=bar_width, label="传感器B")
plt.bar(index+bar_width, average3, yerr=deviation3, width=bar_width, label="传感器C")
# 显示标签label + 调整标签位置
plt.legend(prop=my_font, bbox_to_anchor=(0, 0), loc=3)
# 覆盖x轴对应坐标的名字
plt.xticks(index, x, fontproperties=my_font)
# 生成网格 axis='y'可以让与y轴平行的网格消失
plt.grid(axis='y', linestyle="--")
plt.show()
第十一题题解:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import font_manager
# 设置字体
my_font = font_manager.FontProperties(fname="C:\WINDOWS\FONTS\SIMSUN.TTC")
fp = open('第十一题.txt', 'r')
data = []
try:
while True:
# 去除换行符
line = fp.readline().strip('\n')
if line:
temp = line.split(',')
for i in range(len(temp)):
# 转成float型再append到data里面
temp[i] = float(temp[i])
data.append(temp)
else:
break
finally:
fp.close()
# 平均值
average = []
# 标准差
deviation = []
for i in range(len(data)):
average.append(np.mean(data[i]))
deviation.append(np.std(data[i]))
# 开始绘图,新建窗口
plt.figure(num="软件学院最强!", figsize=(10, 8))
x = range(1, len(average)+1)
# 覆盖x轴对应坐标的名字
plt.xticks(x, x)
# 颜色为对应RGB值
plt.plot(x, average, marker="o", color='#858687', markeredgecolor='r', label="Mean value")
# 在图上标记点的大小,给点加标签
for i in range(len(average)):
plt.text(x[i], average[i], average[i], fontsize=10)
# 限定上下界
y1 = []
y2 = []
for i in range(len(x)):
y1.append(average[i] + deviation[i] / 2)
y2.append(average[i] - deviation[i] / 2)
# 显示方差颜色区域
plt.fill_between(x, y1, y2, color='#d2e3f0', label="Standard deviation")
# 生成网格
plt.grid()
# 显示标签label + 调整标签位置 2表示左上角
plt.legend(loc=2)
plt.show()