如何编写按宽高深分割字符串并返回指定分段的Python函数?
字符串分段函数完善方案
需求回顾
创建函数接收字符串、整数x、宽度width、高度height、深度depth,返回字符串的第x分段;若x无效返回空字符串。
示例
>>> function('v..xXXv..vVX.XX..v', 0, 3, 3, 2) 'v..xXXv..' >>> function('v..xXXv..vVX.XX..v', 1, 3, 3, 2) 'vVX.XX..v'
原代码问题
- 参数顺序错误:未按需求定义参数,漏掉关键的
x参数,且参数顺序混乱 - 变量未定义:代码中使用了未赋值的
n变量 - 未处理无效输入:没有判断
x是否合法,也未校验字符串长度是否足够 - 未使用
depth参数:完全忽略了分段总数的限制
修正后的代码
def function(s, x, width, height, depth): segment_length = width * height # 校验x的有效性:非负、不超过分段总数、字符串长度足够覆盖目标分段 if x < 0 or x >= depth or len(s) < (x + 1) * segment_length: return "" start_idx = x * segment_length end_idx = start_idx + segment_length return s[start_idx:end_idx]
代码说明
- 参数修正:严格按照需求调整参数顺序,明确每个参数的作用
- 分段长度计算:每个分段的长度为
width * height,匹配示例中的分段规则 - 有效性校验:
x必须是非负整数x不能大于等于depth(分段索引从0到depth-1)- 字符串长度必须能覆盖到第x分段的结束位置,避免索引越界
- 分段截取:通过计算起始和结束索引,精准截取对应分段字符串
测试验证
运行示例中的两个调用,返回结果与预期完全一致;传入无效x(如x=2、x=-1)或长度不足的字符串时,返回空字符串。
内容的提问来源于stack exchange,提问作者Amelia Johnny
相关产品推荐
相关产品推荐

