【Python 语言与系统设计】python软件工程大作业+详解

新手代码

题目

在这里插入图片描述

附件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第一题题解:

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()

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值