Python。帕斯卡三角
Python. Pascal's triangle
我是 Python 的初学者。现在我正在尝试创建一个算法来构建帕斯卡三角形。
我的第一步是创建一个基本迭代,它将使用一个名为当前级别的列表,并基于它创建下一个级别列表,如下所示:
- 第一个数字加0创建左边的数字并插入
进入列表。
- 创建数字的内行并将它们插入到列表中
- 将 0 添加到最后一个数字以创建正确的数字并将其插入
进入列表。
我的代码只包含一次迭代,但现在迭代不是问题。我不明白如何通过索引正确地处理列表中的元素。
有人可以给我提示吗?
谢谢!
currentlevel = [1]
nextlevel = []
leftnumber = 0 + currentlevel[0]
nextlevel.append(leftnumber)
for item[index] in currentlevel:
if index > 1 and index < len(currentlevel)-1:
item[index] = item[index] + item[index+1]
nextlevel.append(item[index])
else:
rightnumber = currentlevel[-1] + 0
nextlevel.append(rightnumber)
currentlevel = nextlevel
print(currentlevel)
这行不通:
for item[index] in currentlevel:
使用这个:
for index, item in enumerate(currentlevel):
然后无论你在哪里使用 item[index]
使用 item
或 currentlevel[index]
。除了...
这里除外:
item[index] = item[index] + item[index+1]
nextlevel.append(item[index])
这里最好使用另一个变量:
next_item = currentlevel[index] + currentlevel[index+1]
nextlevel.append(next_item)
虽然 item
可以工作,但有点令人困惑;但是如果你在 next_item
所在的位置使用 currentlevel[index]
,你将破坏前一行。如果您想打印后忘记,这不是问题,但有选择和灵活性很好。
这将不必要地跳过两个元素:
if index > 1 and index < len(currentlevel)-1:
删除第一个子句:
if index < len(currentlevel)-1:
目前看到的就这些,无法测试。
编辑:不是这样的错误,但 0 + whatever
与 whatever
相同。
除非我遗漏了一些 Python 新奇之处,否则 for item[index] in currentlevel:
行是语法错误(编辑:这不是语法错误,而是名称错误;请参阅 Tutleman 的评论)。
尝试以下替代方法来获取列表元素及其索引:
for index, item in enumerate(currentlevel):
或者使用下面的方法来获取索引并通过它们访问元素:
for index in range(len(currentlevel)):
item = currentlevel[index]
查看 this answer 了解更多信息。
我通常不会 post 完整的答案但是...
maxlevel = 5
currentlevel = [1]
for levels in range(maxlevel):
nextlevel = [1]
for index,item in enumerate(currentlevel[0:-1]):
if (len(currentlevel) == 1):
break
nextlevel.append(item + currentlevel[index + 1])
nextlevel.append(1)
print(nextlevel)
currentlevel = nextlevel
我是 Python 的初学者。现在我正在尝试创建一个算法来构建帕斯卡三角形。
我的第一步是创建一个基本迭代,它将使用一个名为当前级别的列表,并基于它创建下一个级别列表,如下所示:
- 第一个数字加0创建左边的数字并插入 进入列表。
- 创建数字的内行并将它们插入到列表中
- 将 0 添加到最后一个数字以创建正确的数字并将其插入 进入列表。
我的代码只包含一次迭代,但现在迭代不是问题。我不明白如何通过索引正确地处理列表中的元素。
有人可以给我提示吗?
谢谢!
currentlevel = [1]
nextlevel = []
leftnumber = 0 + currentlevel[0]
nextlevel.append(leftnumber)
for item[index] in currentlevel:
if index > 1 and index < len(currentlevel)-1:
item[index] = item[index] + item[index+1]
nextlevel.append(item[index])
else:
rightnumber = currentlevel[-1] + 0
nextlevel.append(rightnumber)
currentlevel = nextlevel
print(currentlevel)
这行不通:
for item[index] in currentlevel:
使用这个:
for index, item in enumerate(currentlevel):
然后无论你在哪里使用
item[index]
使用item
或currentlevel[index]
。除了...这里除外:
item[index] = item[index] + item[index+1] nextlevel.append(item[index])
这里最好使用另一个变量:
next_item = currentlevel[index] + currentlevel[index+1] nextlevel.append(next_item)
虽然
item
可以工作,但有点令人困惑;但是如果你在next_item
所在的位置使用currentlevel[index]
,你将破坏前一行。如果您想打印后忘记,这不是问题,但有选择和灵活性很好。这将不必要地跳过两个元素:
if index > 1 and index < len(currentlevel)-1:
删除第一个子句:
if index < len(currentlevel)-1:
目前看到的就这些,无法测试。
编辑:不是这样的错误,但 0 + whatever
与 whatever
相同。
除非我遗漏了一些 Python 新奇之处,否则 for item[index] in currentlevel:
行是语法错误(编辑:这不是语法错误,而是名称错误;请参阅 Tutleman 的评论)。
尝试以下替代方法来获取列表元素及其索引:
for index, item in enumerate(currentlevel):
或者使用下面的方法来获取索引并通过它们访问元素:
for index in range(len(currentlevel)):
item = currentlevel[index]
查看 this answer 了解更多信息。
我通常不会 post 完整的答案但是...
maxlevel = 5
currentlevel = [1]
for levels in range(maxlevel):
nextlevel = [1]
for index,item in enumerate(currentlevel[0:-1]):
if (len(currentlevel) == 1):
break
nextlevel.append(item + currentlevel[index + 1])
nextlevel.append(1)
print(nextlevel)
currentlevel = nextlevel