数字范围两端交替打印指的是给定一个起始数字和一个结束数字,按照先打印起始值、再打印结束值、接着打印起始值加1、结束值减1的顺序依次输出,直到所有数字都被打印完毕。这种需求在数据处理、序列生成场景中较为常见,实现时需要重点处理边界条件和奇偶数相关的逻辑。

核心需求分析
要实现数字范围两端交替打印,首先需要明确几个基础规则:
- 当起始值小于等于结束值时,按照从两端向中间收敛的顺序打印
- 当起始值大于结束值时,需要先交换两个值,再按照同样的规则处理
- 如果范围的数值个数是奇数,最后会剩下一个中间值需要单独打印
- 如果范围的数值个数是偶数,所有值刚好成对打印完毕
边界条件处理逻辑
边界条件主要分为两类,一类是输入的起始值和结束值的大小关系,另一类是范围长度对应的奇偶数情况。
起始值与结束值的大小关系处理
如果用户输入的起始值大于结束值,直接按照原顺序处理会导致循环无法执行,因此需要先判断两个值的大小,若起始值更大则交换两者,保证循环从较小的数开始向较大的数推进。
奇偶数场景处理
当起始值小于等于结束值时,循环的条件是起始值小于等于结束值。在循环过程中,每次先打印当前的起始值,再将起始值加1;然后判断此时起始值是否还小于等于结束值,如果满足则打印当前的结束值,再将结束值减1。如果范围长度是奇数,循环结束后会剩下一个中间值,此时起始值会等于结束值,需要单独打印这个值。
完整代码实现
以下是Python实现数字范围两端交替打印的完整代码,包含边界处理和奇偶数适配逻辑:
def alternate_print(start, end):
# 处理起始值大于结束值的情况,交换两者
if start > end:
start, end = end, start
# 循环打印两端数字
while start <= end:
# 打印当前起始值
print(start)
start += 1
# 若起始值仍小于等于结束值,打印当前结束值
if start <= end:
print(end)
end -= 1
# 测试示例1:正常范围,长度为偶数
print("测试范围1-4的结果:")
alternate_print(1, 4)
# 测试示例2:正常范围,长度为奇数
print("n测试范围1-5的结果:")
alternate_print(1, 5)
# 测试示例3:起始值大于结束值
print("n测试范围5-1的结果:")
alternate_print(5, 1)
# 测试示例4:单个数字范围
print("n测试范围3-3的结果:")
alternate_print(3, 3)
代码逻辑说明
上述代码中,alternate_print函数接收两个参数作为数字范围的起始和结束值。首先判断起始值是否大于结束值,如果是则交换两者,避免后续循环逻辑出错。接着进入while循环,只要起始值小于等于结束值就继续执行:先打印当前的起始值,然后将起始值加1;之后再次判断起始值是否小于等于结束值,如果满足则打印当前的结束值,再将结束值减1。当范围长度为奇数时,循环结束后会剩下中间的一个值,此时起始值等于结束值,会在最后一次循环中打印出来,不需要额外处理。
测试结果说明
运行上述测试代码,会得到以下输出结果:
测试范围1-4的结果: 1 4 2 3 测试范围1-5的结果: 1 5 2 4 3 测试范围5-1的结果: 1 5 2 4 3 测试范围3-3的结果: 3
从测试结果可以看出,无论是正常范围、起始值大于结束值的场景,还是奇数长度、单个数字的场景,代码都能正确处理,符合数字范围两端交替打印的需求。