python练习题3

41 阅读2分钟

题目1:编写一个程序:判断一个年份是否为闰年

def isRun(year):
    if(year % 4 == 0 and year %100 != 0) or year % 400 ==0:
        return True
    else:
        return False
# 测试用例
year = int(input("请输入一个年份:"))
if isRun(year):
    print(year,"年是闰年")
else:
    print(year,"是平年")

题目2: 将一个整数进行因式分解,打印出所有的质因数。比如90=233*5

def fun(num):
    res = []
    i = 2
    while i**2 <= num:
        if num % i != 0:
            i += 1
        else:
            num //= i
            res.append(i)
    if num != 1:
        res.append(num)
    return res
# 测试用例
num = int(input("请输入一个整数:"))
res = fun(num)
print(res)

题目3:给定一个包含学生成绩信息的 CSV 文件“学生成绩.csv”,文件中有学生姓名、数学成绩、语文成绩、英语成绩等字段。

请使用 Python 的numpy和matplotlib库完成以下任务:

1.读取 CSV 文件中的数据。(提示:使用loadtxt函数)

import  numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt(
    "学生成绩.csv",
    skiprows=1,
    usecols=(1,2,3),
    delimiter=",",
    encoding="gbk",
    dtype=np.int64
)
print(data)

2.计算每位学生的平均成绩。(提示:使用mean函数 axis)

print("每位学生的平均成绩:\n",np.mean(data,axis=1))

3.统计每门课程的最大值、最小值、中位数、方差和峰值范围。(提示:使用max、min、median、var、ptp函数)

print("每门课程的最大值为:\n",np.max(data,axis=0))
print("每门课程的最小值为:\n",np.min(data,axis=0))
print("每门课程的中位数为:\n",np.median(data,axis=0))
print("每门课程的方差为:\n",np.var(data,axis=0))
print("每门课程的峰值范围为:\n",np.ptp(data,axis=0))

4.使用柱状图可视化展示每位学生的平均成绩。(提示:使用matplotlib.pyplot.bar函数)

avg = np.mean(data,axis=1)
x = np.arange(1,avg.size + 1)
plt.bar(x,avg)
plt.show()

题目4:有一个销售数据的 CSV 文件“销售产品数据.csv”,包含字段 “日期”、“产品名称”、“销售数量”、“销售单价”。

请使用 Python 的pandas和matplotlib库完成以下任务:

1.1.读取 CSV 文件中的数据。

df = pd.read_csv(
    "销售产品数据.csv",
    header=0,
    encoding="gbk"
)
print(df)

2.计算每种产品的总销售额(销售数量乘以销售单价)。

df['总销售额']=df['销售数量']* df['销售单价']
print(df)
total = df.groupby("产品名称")['总销售额'].sum()
#total = total.reaet_index()
print(total)

3.找出销售额最高的产品。

print("销售额最高的产品:",total.idxmax())

4.按月份统计总销售额,并绘制折线图展示每月总销售额的变化趋势。

df['日期'] = pd.to_datetime(df['日期'])
print(df['日期'].dtype)
df['月份'] = df['日期'].dt.month
print(df)