python编程 给定一组数据 判断他们是否是连续数字组合 0可代表任何数字 连续则输出YES+0的个数,不连续则输出NO+0的个数

num = int(input())
arr = list(map(int, input().split()))
# 排序
arr.sort()
# 计算0的个数,有0去除0并计数,没有0则不变
count_zone = 0
tmp_arr = arr[:]
for i in arr:
    # print(i)
    if i == 0:
        count_zone += 1
        tmp_arr.remove(arr[i])
    arr = tmp_arr
# print(arr,count_zone)
# 判断是否连续,不关心是否有零
res = (max(arr) - min(arr)) / (len(arr) - 1)
# res等于1 代表连续
if res == 1:
    print("YES+%s" % count_zone)
cha_v = []
# 2 数字不连续

if res != 1:
    for j in range(len(arr) - 1):
        # 不连续的差值-1 放入差值列表
        if arr[j + 1] - arr[j] > 1:
            cha_v.append((arr[j + 1] - arr[j]) - 1)

    if count_zone >= sum(cha_v):
        print("YES+%s" % count_zone)

    else:
        print("NO+%s" % count_zone)

输入

4
4 2 0 0

输出

YES+2

你可能感兴趣的:(python基础)