实现输入一组大于等于0的整数,根据从小到大的顺序去重排序后输出,排序后有连续数时,只输出连续数中最小和最大的两个数

  • 时间:
  • 来源:互联网
  • 文章标签:

输入:一组大于0的整数,不考虑非法输入,各个整数之间以(‘,’)分隔,输入字符串的总长度小于等于100个字节。

输出:排序后的值,各个整数之间以(‘,’)分隔。

样例输入:1,4,3,88,2,88,90,100

样例输出:1,4,88,90,100

num_str = str(input('输入字符串,字符串之间用逗号隔开:\n'))
num_list = num_str.split(',', -1)
num_list = set(num_list) #根据set函数特性去重
num_int_list = list(map(int, num_list))
print('去重后', num_int_list)
num_int_list.sort() #排序函数调用
print('排序后', num_int_list)
length = len(num_int_list)
n = 0
result = []  #结果放入到result列表中
while n < length-1:
    if num_int_list[n] == num_int_list[n+1] - 1:
        #star记录连续数字的开始下标
        star = n
        nums = num_int_list[star]
        while (n+1<length and num_int_list[n] == num_int_list[n+1]-1):
            n += 1
        # end记录连续数字的末尾
        end = n
        #数字的末尾存入到nume
        nume = num_int_list[end]
        #将符合条件的连续数字的两段数字存入result
        result.append(nums)
        result.append(nume)
        n += 1
    else:
        #将其余间断的数字直接存入result
        gap = num_int_list[n]
        result.append(gap)
        n += 1
#判断n是否是最后一位数字,是则打印
if n == length-1:
    last = num_int_list[n]
    result.append(last)
print('最终结果', result)

注意判断下标,防止越界

本文链接http://www.taodudu.cc/news/show-1781760.html