题目 1:输入一个整数n,计算该整数各位数字之积与各位数字之和的差。
例如:n = 234, result = 15
num_sum = 0
num_prod = 1
num = input("输入一个整数:")
if len(num) == 0:
print("输入错误")
num_sum = sum([int(char) for char in num])
for char in num:
num_prod *= int(char)
print(f"{num}各位数字之积与各位数字之和的差为{num_prod-num_sum}")
题目 2:给定一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
例如: s = "Hello World", result = 5 s = "luffy is still joyboy", result = 6
def last_word_length(s):
if len(s) == 0:
return 0
s = s.strip()
words = s.split()
if words:
return len(words[-1])
else:
return 0
#
s1 = "Hello World"
s2 = "luffy is still joyboy"
print(f"{s1}的最后一个单词的长度为{last_word_length(s1)}")
print(f"{s2}的最后一个单词的长度为{last_word_length(s2)}")
题目 3:餐厅菜品销售数据分析
“餐厅菜品销售.csv” 包含字段:“日期”“菜品名称”“销售份数”“菜品单价 (元)”“菜系 (川菜 / 粤菜 / 鲁菜)”。请使用 pandas 和 matplotlib 完成以下任务:
- 读取 CSV 文件数据。
- 计算每道菜品的总销售额(销售份数 × 菜品单价)和总销售份数。
- 按 “菜系” 分组,统计每个菜系的总销售额(提示:使用 groupby )。
- 提取 “日期” 中的星期信息(如周一至周日),统计每周各天的总销售份数,绘制折线图展示一周内的销售趋势。
- 找出总销售额最高的 3 道菜品,用饼图展示它们的销售额占所有菜品总销售额的比例。
# 1. 读取 CSV 文件数据。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv(
"餐厅菜品销售.csv",
encoding="utf-8"
)
print(df)
# 2. 计算每道菜品的总销售额(销售份数 × 菜品单价)和总销售份数。
df['总销售额'] = df['销售份数'] * df['菜品单价(元)']
print(df)
print("总销售份数为:",df['销售份数'].sum())
# 3. 按 “菜系” 分组,统计每个菜系的总销售额(提示:使用 groupby )。
total_sales = df.groupby('菜系(川菜/粤菜/鲁菜)')['总销售额'].sum()
print(total_sales)
# 4. 提取 “日期” 中的星期信息(如周一至周日),统计每周各天的总销售份数,绘制折线图展示一周内的销售趋势。
df['日期'] = pd.to_datetime(df['日期'])
df['星期'] = df['日期'].dt.weekday + 1
print(df)
total_weekday_sales = df.groupby('星期')['销售份数'].sum()
print(total_weekday_sales)
plt.plot(total_weekday_sales.index,total_weekday_sales)
plt.show()
# 5. 找出总销售额最高的 3 道菜品,用饼图展示它们的销售额占所有菜品总销售额的比例
top3 = df.nlargest(3,'总销售额')
all_sales = df['总销售额'].sum() #所有菜品总销售额
top3_at = top3['总销售额'] / all_sales # 占比
print(top3)
top3['总销售额占比'] = top3_at
print(top3_at)
plt.rcParams['font.family'] = ['SimHei']
plt.pie(top3_at,labels=top3['菜品名称'],autopct='%1.1f%%')
plt.show()
运行结果如图:
题目 4:学生体测数据统计分析
“学生体测数据.csv” 包含字段:“学号”“姓名”“性别”“身高 (cm)”“体重 (kg)”“800 米成绩 (秒)”“立定跳远 (m)”。请使用 pandas、numpy 和 matplotlib 完成以下任务:
- 读取 CSV 文件数据。
- 计算每位学生的 BMI 指数(体重 (kg)/ 身高 (cm)),添加为新列。
- 按 “性别” 分组,统计 “身高”“体重”“800 米成绩”“立定跳远” 的均值和方差(提示:使用 agg 函数批量统计)。
- 筛选出 BMI 指数在 18.5-23.9 之间(正常范围)的学生,保存为新 CSV 文件 “正常 BMI 学生.csv”(不含索引)。
- 绘制男生和女生的 “立定跳远” 成绩折线图,对比性别差异。
# 1. 读取 CSV 文件数据。
data = pd.read_csv(
"学生体测数据.csv",
encoding="utf-8",
index_col='学号'
)
print(data)
# 2. 计算每位学生的 BMI 指数(体重 (kg)/ 身高 (cm)),添加为新列。
data['BMI指数'] = data['体重(kg)'] / data['身高(cm)'] * 50
print(data)
# 3. 按 “性别” 分组,统计 “身高”“体重”“800 米成绩”“立定跳远” 的均值和方差(提示:使用 agg 函数批量统计)。
data_mean = data.groupby('性别').agg({'身高(cm)':'mean',
'体重(kg)':'mean',
'800米成绩(秒)':'mean',
'立定跳远(m)':'mean'}
)
data_var = data.groupby('性别').agg({'身高(cm)':'var',
'体重(kg)':'var',
'800米成绩(秒)':'var',
'立定跳远(m)':'var'}
)
print("均值: \n",data_mean)
print("方差: \n",data_var)
# 4. 筛选出 BMI 指数在 18.5-23.9 之间(正常范围)的学生,保存为新 CSV 文件 “正常 BMI 学生.csv”(不含索引)。
normal_bmi = data[(data['BMI指数'] >= 18.5) & (data['BMI指数'] <= 23.9)]
print(normal_bmi)
normal_bmi.to_csv("正常BMI学生.csv")
#5. 绘制男生和女生的 “立定跳远” 成绩折线图,对比性别差异
male_jump = data[data['性别'] == '男']['立定跳远(m)'].sort_values()
female_jump = data[data['性别'] == '女']['立定跳远(m)'].sort_values()
print(male_jump)
print(female_jump)
t_male = range(1,len(male_jump) + 1)
t_female = range(1,len(female_jump) + 1)
plt.plot(t_male,male_jump,'r-',label="男生跳远成绩")
plt.plot(t_female,female_jump,'r-',label="女生跳远成绩")
plt.legend()
plt.show()
运行结果如图: