高效作业8 第8课 字符串2——字符串应用-【精彩三年】2024-2025学年高中信息技术选择性必修1课程探究与巩固Word教参(浙教版2019)

| 17页
| 78人阅读
| 2人下载
浙江良品图书有限公司
进店逛逛

新版页眉

学科网 zxxk.com学科网 zxxk.com

高效作业8[第8课 字符串2——字符串应用](见学生用书P196)

【A级 新教材落实与巩固】

1.小王编写了一个“查找最长区间”的 Python 程序,功能如下:依次输入各个区间的起点和终点(数据均为整数,都用逗号分隔并以逗号结尾),程序运行之后显示最长的区间。例如,三个区间为(1,6),(10,23),(21,29),输入格式和程序运行界面如图所示。

(1)实现上述功能的Python程序如下,请在横线处填入合适的代码。

s=input()

i=0;maxn=0;r=0

k=0;temp=0;l=0

while i<len(s):

①__ch=s[i]__

if ch>=”0”and ch<=”9”:

temp=temp*10+int(ch)

else:

k=k+1

if k%2==1:

l=temp

else:

r=temp

if maxn < r-l+1:

②__maxn=r-l+1__

ans=r

temp=0

③__i=i+1____

print(”最长的区间是”+str(ans-maxn+1)+”到”+str(ans))

(2)若输入内容的结束符缺失(即输入内容为 1,6,10,23,21,29),则执行该程序后,变量 r 的值为__23__。

【解析】 (1)①从前往后遍历字符串s,提取第i个字符放在ch中,故填入ch=s[i]。②统计长度,结尾减去开头,r是结尾处,所以要加1。③temp用来存储当前提取出的连续数据,k用来统计提取出的连续数据的个数,l表示当前区间的左端点值,r代表当前区间的右端点值,maxn表示最长区间的长度,ans表示最长区间的右端点值,最后循环变量i变化,提取下一个字符,循环重复上述过程,故填入i=i+1。page number 0

独家授权

学科网 zxxk.com学科网 zxxk.com学科网(北京)股份有限公司


新版页眉

学科网 zxxk.com学科网 zxxk.com

(2)数字29后面没有“,”,当遍历到最后一个字符时,执行第2个else下面的表达式,temp=29,没有给当前区间的右端点赋值,此时r是上一个区间的右端点值,故r=23。

2. 某Python 程序的功能如下:输入由大小写字母组成的字符串s,将s中的字符按照大小写重新组合,大写字母在左,小写字母在右,且同类大小写字母间保持原相对顺序,输出一个新的字符串res,并计算大小写字母个数相差的绝对值。如图所示:

请输入字符串: bcdkAABJk

转换后:AABJbcdkk

大小写字母个数相差1个

(1)如果输入“abcAABBab”,则转换后新的字符串为__AABBabcab__。

(2)某同学尝试了两种思路,分别处理大写字母和小写字母,请在横线处填入合适的代码。

s=input(”请输入字符串: ”)

idx=[]

c=0

res=””

for ch in s:

if ”A”<=ch<=”Z”:

idx.append(c)

else:

res=①__res+ch__ #拼接小写字母

c+=1

delta=②__abs(len(res)-len(idx))__或__abs(len(idx)-len(res))__ #计算大小写字母个数相差的绝对值

for i in idx[-1::-1]:  #拼接大写字母

res=③__s[i]+res__

print(”转换后: ”,res)

print(”大小写字母个数相差”,delta,”个”)

【解析】 (1)由题干描述结合题图可知,大写字母按照原相对顺序全部写在左边,小写字母全部写在右边。

(2)根据if条件和中文提示可知,要拼接字符和求长度差的绝对值。根据range的参数是从后往前可知,应该逆向向左拼接大写。

3.商店每个月的收入与支出数据用“收入-支出”格式表示, 依序给定一年12个月的“收入-支出”数据,中间用逗号隔开,如图所示。小李通过编写Python程序, 求“四个季度中季度净收入的最高值”。实现该功能的Python程序段如下, 请在横线处填入合适的代码。

请输入一年12个月的数据:

142-27,849-767,661-372,89-85,663-169,

908-244,764-255,241-128,900-488,458-

356,929-747,397-377

季度净收入的最高值是: 1162

#求出某个月的净收入

def mon(s):page number 1

独家授权

学科网 zxxk.com学科网 zxxk.com学科网(北京)股份有限公司


新版页眉

学科网 zxxk.com学科网 zxxk.com

i=0

while i<len(s) and s[i]!=”-”:

i+=1

①__income=int(s[:i])__或__income=int(s[0:i])__

expense=int(s[i+1:])

return income-expense

#求出某个季度的净收入

def quar(begin,end):

values=0

section=s[begin:end].split(”,”)

for i in range(len(section)):

②__values=values+mon(section[i])__

return values

s=input(”请输入一年12个月的数据: ”)

k=start=totmax=total=0

for i in range(len(s)):

if i==len(s)-1:

total=quar(start,len(s))

elif s[i]==”,”:

③__k+=1或k=k+1或其他等价答案__

if k%3==0:

④__total=quar(start,i)或其他等价答案__

start=i+1

if total>totmax:

totmax=total

print(”季度净收入的最高值是: ”,totmax)

【解析】 ①函数mon()用于统计每月的差值,传入的参数结构为“xxx-yyy”,例如“142-27”,利用循环找到“-”的位置,分别提取收入和支出,收入income=int(s[:i]),支出expense=int(s[i+1:])。

②函数quar()用于统计季度和,传入的参数begin和end为该季度的开始和结束位置,section=[“xxx-yyy”,“xxx-yyy”,“xxx-yyy”],在循环中调用函数mon(),并将返回值累加到values中。

③对月份进行计数,每遇到新月份,k+=1。

④k%3==0,则表示一个季度结束,调用函数quar()对季度进行统计。

4.2023·义乌中学检测某同学设计了一种加密算法,加密规则如下:

①若待加密字符中出现大写字母,就将其转换为它在字母表中的次序,如A→1,B→2,Y→25,Z→26;

②若待加密字符中连续出现小写字母,将这些小写字母反向添加进密码中,如出现“aeiou”将转换为“uoiea”;

③若待加密字符中出现数字,那么将数字0~9分别转换为字母A-J,如0→A,1→B,…,9→J;

④所有的密码之间用空格隔开。page number 2

独家授权

学科网 zxxk.com学科网 zxxk.com学科网(北京)股份有限公司


由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。