组卷网 > 高中信息技术综合库 > 数据与计算 > 算法与程序实现 > 算法 > 典型算法
题型:操作题 难度:0.65 引用次数:29 题号:19528689
某地气象站每3小时记录一次数据,现收集了该地区2022年全年的天气数据,数据按时间日期顺序存储在“weather.xlsx”文件中,部分数据如图a所示。

图 a

图 b

统计全年每月降水天数(当日总降水量大于 0 即计入降水天数),编写 Python 程序,回答下列问题:
(1)求每日总降水量并输出,结果如图b所示,部分程序代码如下,则划线处可行的是________ (单选,填字母) 。

import pandas as pd

df=pd.read_excel ("weather.xlsx")

df1=        

print(df1)

A.df.groupby("降水量",as_index= True). 日期.sum()

B.df.groupby("降水量",as_index=False). 日期.sum()

C.df.groupby("日期",as_index=False).降水量.sum()

D.df.groupby("日期",as_index=True).降水量.sum()

(2)统计每月降水天数,绘制柱形图如图 c 所示。程序代码如下,请在划线处填入合适的代码。

import matplotlib.pyplot as plt

plt.rcParams['font.family']='SimHei'   #设置图表中的中文字体

days=[31,28,31,30,31,30,31,31,30,31,30,31]     #2022 年每月天数

rain_days=[0]*12

begin=0

for m in range(12):

for d in range(begin,______ ):

if df1.at[d,"降水量"]>0:

_______

begin+=days[m]

x=[i+1 for i in range(12)]

y=rain_days

plt.bar (        ) , label="降水天数")

plt.xticks(x)       #设置横坐标刻度

plt.legend()

plt.show ()

(3)已知全国月均降水天数约为11天,则超过全国月均降水天数的月份共有____ 个。

图 c

【知识点】 典型算法

相似题推荐

操作题 | 适中 (0.65)
【推荐1】在学习加密算法时,张老师发现有学生在传小纸条,当场截获后,发现纸条经过了加密处理
内容为:xglunq2
该密码的字母非常混乱,张老师猜测是经过了替代加密法的加密,并且最后一个数字2是加密密钥。于是他立刻编写了一个凯撒密码的解密函数:
def decrypt(code,key):

code_new =""

for s in code:

m=ord(s)

code_new +=chr(97 + (______①________) % 26)

print(code_new)

return code_new

code=input('输入密文')
print(decrypt(code,2))
通过这个函数,张老师输入'xglunq',成功得到了一重解密的结果。
(1)凯撒密码的解密方法是每个字母用它在字母表中前key位的字母替代,已知凯撒密码的密钥为2,密文是xglunq,可以破解出明文为__________________
(2)张老师忘记了解密函数的做法,请你帮他补全①_____________________
(3)观察结果,此时答案已经呼之欲出,张老师猜测只需再进行一次换位加密算法的解密,即可成功破解,于是他又编写了一个解密函数。

def huanwei(code,key):

code_new=''

for i in range(len(code)):

code_new=code_new+code[(i-key) _____②____]

return code_new

请你帮他补全②__________
(4)使用这个函数将(1)中的结果再次进行解密,密钥为2。终于,我们成功破解了这个密码,明文是____________
张老师欣慰一笑,表扬了这位同学的好学精神。
2022-03-30更新 | 60次组卷
操作题 | 适中 (0.65)
【推荐2】有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。火柴数字如图所示:

以下是解决该问题的Python程序代码:
def matchnum(num):

f=[6,2,5,5,4,5,6,3,7,6]#0-9的数字分别需要多少根小棒

if ① #火柴棒总数变量赋初值

total=f[0]

else:

total=0

while(num>0):

x=num%10     #取num除以10的余数,即num的个位数

       #所需火柴棒数累加

num=num//10     #num整除10,即去掉num的个位数

return total     #返回需要多少根火柴棒数

#以下为主程序
snum=6   #6根火柴棒
print(“你可以拼出这些数字:“)
for i in range(112):

if ③          #如果i需要的火柴棒数等于现有火柴棒数

print(i)

print("运行完毕,请按回车退出...")
要实现上述要求,①②③填入的代码完全正确的一组是(        )
A.①num==0   ②total=f[x]   ③i==snum
B.①num==0: ②total=total+f[x]   ③matchnum(i)==snum
C.①num==0;②total=total+f[x]   ③matchnum(i)==snum
D.①num==0   ②total=total+f[x]   ③i==snum
2022-07-09更新 | 50次组卷
操作题 | 适中 (0.65)
【推荐3】下面程序的功能是:找出10以内的奇数中能被3整除的正整数,并将它们累加起来。为了实现这一目标,请完善下列程序:

x=0

For i=1 to 10 step ____

            If   _______________________ then x=x+i

Next i

2020-01-07更新 | 28次组卷
共计 平均难度:一般