我不知道是否有人也遇到过这样的情况。今天用 python 写杨辉三角题的时候遇到了这么个问题。
考虑如下代码:
n = int(input()) n += 1 at = [1] # 注意这里 for _ in range(n): line = '-' * (2*(n - _ - 1)) + '***' sums = 0 for j in range(_ + 1): sums += j edge1 = sums - _ - 1 edge2 = sums for i in range(_ + 1): parent1 = sums - _ + i - 1 parent2 = sums - _ + i if (edge1 == parent1) or (edge2 == parent2): at += [1] else: at += [at[parent1] + at[parent2]] line += str(at[sums + i]) + ('***' if i != _ + 1 else '') print(line)
一开始我以为自己写的算法有问题,于是改了几下,但更不对了,然后调啊调,最终不耐烦了,又回过头,然后开始认真思考了,不管怎么想算法都没问题才对,然后,我看了一下输出:
突然觉得是不是自动排序了啊。。。然后,我就怀疑到 list 初始化的地方:at = [1],感觉应该是初始化造成新加入的元素会按我的格式排序。
总之,我把初始化 at = [1] 改成了 at = [] 后就正常了(但也太神奇了。。。为什么是按杨辉三角来排序。。。我。。。: