gpt4 book ai didi

python - 循环查找 "bouncy"数字

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:23 24 4
gpt4 key购买 nike

考虑正数的以下定义:

如果从左到右它的数字永远不会变小,则该数字是非递减的。例如,12345和 3388 是非递减的。

如果从左到右它的数字从不变大,则该数是非递增的。例如,987542 和881个没有增加。

如果一个数字既不是非递减的也不是非递增的,则它是有弹性的。例如,12134 和 98462 是有弹性。编写一个 Python 函数 bouncy,它消耗一个正自然数(称为 n)并产生1 和 n 之间的数字百分比,包括 1 和 n,这是有弹性的。结果应作为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

有人知道吗?

最佳答案

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

def bouncy(n):
return round(sum(list(i) not in (sorted(i), sorted(i, reverse=True)) for i in map(str, range(1, n+1)))/n*100)

map() 将范围内的每个数字转换为一个字符串,然后检查是否在 排序中找不到该字符串的 list() () 该字符串的版本(增加或减少)。然后它将匹配的数字相加,除以 n,乘以 100,round() 计算结果,返回

关于python - 循环查找 "bouncy"数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com