python test3

51 阅读2分钟
#题目1:定义一个函数,输入整数n,返回斐波那契数列中的前n个元素。
#(提示:要求使用递归方法,斐波那契数列--1,1,2,3,5,8,13...)
def fib(n):
    if n == 1 or n == 2:
        return 1
    else:
        # n > 2
        return fib(n-1)+fib(n-2)
n = int(input("输入一个整数:"))
res = [fib(i) for i in range(1, n +1)]
print(res)

#题目2:中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱。
#现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?编程解决以上问题。
for x in range(0,21):
    for y in range(0,34):
        z = 100 - x - y
        if (5 * x + 3 * y + z / 3) == 300 and z % 3 == 0:
            res.append((x,y,z))
print("公鸡 母鸡 小鸡各多少只: ",res)

# 3、题目3:流行病学通常关注单日治愈患者例数增长(即当日治愈例数减去前日治愈例数),并以单日治愈患者例数最高增长点作为疫情向好发展的标志点。
# “某国疫情数据.csv”文件是以逗号分隔的2020年1月1日至1月31日某国发生新冠肺炎疫情变化csv数据文件。
# 请编写程序,找出单日治愈例数增长最高日期,若有并列最高增长日,则选择并列的最后一日。
# 输出结果。同时将程序结果保存到"new_data.txt"文件中。
import pandas as pd
#读取
df = pd.read_csv(
    "某国疫情数据.csv",
    encoding="gbk",
    index_col=0
)
print(df)
#计算单日治愈增长
df['治愈增长'] = df['治愈'].diff().fillna(0)
print(df)
#单日治愈增长最高日期
print("单日治愈增长最高日期:",df['治愈增长'].index())


# 题目4:
import matplotlib.pyplot as plt
#设置中文
plt.rcParams["font.family"] = "SimHei"#黑体
# 1、读取游客数据文件。
data = pd.read_csv(
    "游客数据.csv",
    encoding="gbk"
)
print(data)

# 2、计算每个月的平均游客数量,并绘制柱状图展示每月平均游客数量的变化趋势。
#将日期这一列由字符串转换为日期类型
data['日期'] = pd.to_datetime(data['日期'])
print(data['日期'].dtype)
data['月份'] = data['日期'].dt.month
print(data)
mean_data = data['日期'].dt.month
print(mean_data)
mean_data = data.groupby('月份').agg({'游客数量':'mean'})
print(mean_data)
mean_data.plot(kind = "bar")
plt.show()

# 3、统计不同游客来源地区的游客数量占比,并使用饼图展示。
sum_data = data.groupby("游客来源地区")['游客数量'].sum()
print(sum_data)
sum_data.plot(kind = "pie")
plt.show()

# 4、分析不同年龄区间的游客数量分布情况,绘制直方图展示。
age_data = data.groupby("游客年龄区间")['游客数量'].sum()
age_data.plot(kind = "bar")
plt.show()

# 5、找出游客数量最多的日期,并计算该日期来自不同地区的游客比例。
maxdate = data['游客数量'].idxmax()
print(maxdate)
print("")