我正在尝试创建一个三角形,它接收用户输入的值,并从值中找到这些输入中的最大路径。我在本质上问了这个问题,找到了最大路线:Finding the Maximum Route in a given input
代码:
def triangle(rows):
for rownum in range (rows):
PrintingList = list()
print ("Row no. %i" % rownum)
for iteration in range (rownum):
newValue = input("Please enter the %d number:" %iteration)
PrintingList.append(int(newValue))
print()
def routes(rows,current_row=0,start=0):
for i,num in enumerate(rows[current_row]):
#gets the index and number of each number in the row
if abs(i-start) > 1: # Checks if it is within 1 number radius, if not it skips this one. Use if not (0 <= (i-start) < 2) to check in pyramid
continue
if current_row == len(rows) - 1: # We are iterating through the last row so simply yield the number as it has no children
yield [num]
else:
for child in routes(rows,current_row+1,i): #This is not the last row so get all children of this number and yield them
yield [num] + child
numOfTries = input("Please enter the number of tries:")
Tries = int(numOfTries)
for count in range(Tries):
numstr= input("Please enter the height:")
rows = int(numstr)
triangle(rows)
routes(triangle)
max(routes(triangle),key=sum)
输入三角形的所有值后得到的错误:
Traceback (most recent call last):
File "C:/Users/HP/Desktop/sa1.py", line 25, in <module>
max(routes(triangle),key=sum)
File "C:/Users/HP/Desktop/sa1.py", line 10, in routes
for i,num in enumerate(rows[current_row]): #gets the index and number of each number in the row
TypeError: 'function' object is not subscriptable
我的代码中的错误在哪里?需要一些帮助..谢谢...
答案 0 :(得分:2)
您正在使用:
routes(triangle)
triangle
名称是指一个函数,它作为第一个参数rows
传递给函数routes
。在函数体中,rows[current_row]
产生错误,因为rows
确实是一个函数。
我真的没看到你想要做什么。也许您想从PrintingList
返回triangles
并将此结果依次传递给函数routes
?
答案 1 :(得分:1)
您可能正在尝试获取在PrintingList
函数内创建的triangle
的值rows
函数中的routes
变量。
为了使程序以这种方式工作,你必须在三角函数中添加一个return语句 - 也就是说,在那里添加一个return PrintingList
作为最后一个语句 - 并在调用函数时存储该值,并传递存储的值为routes
函数 - 这意味着,程序的结尾应该是这样的:
result = triangle(rows)
routes(result)
max(routes(triangle),key=sum)
这将修复此问题,上面的代码中可能还有其他问题。
答案 2 :(得分:-3)
正如回溯所述,它在25和10行中。它说该函数不是可订阅的,这是真的,你不能订阅一个函数。但是,您可以订阅:
String: "x"[2] == "foo"
Tuple: (2,5,2,7)[3] == 7
List: [1,2,3,"foo"][3] == "foo"
Dict: {"a":1, "b":5, "c":5}["a"] == 1