考虑以下正数的定义:
如果从左到右,数字从不变小,则数字不会减少。例如,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
。
有人有个主意吗?
答案 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。