Python程序交替输出范围两端整数时重复值问题修正咨询
修正交替输出范围两端数时的重复打印问题
问题场景
需求:编写Python程序,接收用户输入的数字,交替输出1到该数字之间的正整数(先输出左端,再输出右端,依次向中间靠拢)。例如输入5时,预期输出:
Please type in a number:5 1 5 2 4 3
但现有代码运行时会多输出一个3,实际输出:
Please type in a number:5 1 5 2 4 3 3
问题原因
现有代码的循环条件为index <= num,当处理到奇数的中间值时(如输入5时,index和num同时等于3),循环条件成立,会先后执行print(index)和print(num),导致同一个数被打印两次。
修正方案
方案一:循环内判断两端值是否相等
在打印右端值前,先判断当前index和num是否相等,仅当二者不同时才打印右端值:
num = int(input('Please type in a number:')) index = 1 while index <= num: print(index) if index != num: print(num) index += 1 num -= 1
方案二:拆分循环与中间值处理
将循环条件改为index < num,仅处理两端值不同的情况,循环结束后单独处理奇数的中间值:
num = int(input('Please type in a number:')) index = 1 while index < num: print(index) print(num) index += 1 num -= 1 # 当输入为奇数时,此时index和num相等,打印中间值 if index == num: print(index)
两种方案均能解决重复打印的问题,输入5时均可得到符合预期的输出。
内容的提问来源于stack exchange,提问作者aditya Verma
相关产品推荐
相关产品推荐

