循环发现"弹性"数字

时间:2015-11-25 07:28:02

标签: python python-3.x

考虑以下正数的定义:

如果从左到右,数字从不变小,则数字不会减少。例如,12345 和3388不减少。

如果从左到右,数字从不变大,则数字不增加。例如,987542和 881不增加。

如果数字既不是非减少也不是非增加,则数字是有弹性的。例如,12134和98462是 有弹性。 写一个Python函数有弹性,消耗一个正的自​​然数(称为n)并产生 1和n之间的数字百分比,包括1和n,这是有弹性的。结果应该生成为 0到100之间的自然数,包括0和100。使用round将浮点百分比转换为 整数。

def bouncy(input):
list1 = [0 for i in range(input)]
list1[0] = 0
for x in range(1, input-1):
    if x < 100:
        list1[x] = list1[x - 1]
    else:
        n=x
        a = [0 for i in range(x)]
        i = 0
        while n > 0:
            a[i]=n % 10
            n/= 10
            i+=1
        flag = 1
        for k in range(1, len(a) - 2):
            if not ((a[k - 1] < a[k] < a[k + 1]) or (a[k - 1] > a[k] > a[k + 1])):
                flag = 0
                break
        if flag == 0:
            list1[x]==list[x-1]+ 1
return list1[input-1]

当我运行我的代码时,它会显示builtins.IndexError: list assignment index out of range

有人有个主意吗?

1 个答案:

答案 0 :(得分:2)

您不必执行任何操作。只需将数字转换为字符串即可。如果它的排序是非减少的,如果它反向排序则不增加,否则它是有弹性的。

map()

list()个字符串范围内的每个数字,然后检查该字符串的sorted()版本中是否找不到该字符串的n(增加或减少)。然后,它会将多少个数字相加,除以round(),乘以100,return s和{ token: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX', team_id: 'XXXXXXXXXXX', channel_id: 'XXXXXXXXX', channel_name: 'channel', timestamp: Invalid Date, user_id: 'XXXXXXX', user_name: 'user', text: 'massive string' } s。