2012-04-13 49 views
1

当我运行下面的代码时,迭代从0开始。我想将行从第1行开始更改。我该如何更改它?我在迭代开始之前尝试输入rownum = 1。Iterartion以0开始

代码:

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) 

输出:

Please enter the number of tries:2 
Please enter the height:4 
Row no. 0 
Row no. 1 
Please enter the 0 number: 

任何帮助表示赞赏。

+1

的Python具有的所有功能的描述有一个好的文档:['range'](HTTP ://docs.python.org/library/functions.html#range),['enumerate'](http://docs.python.org/library/functions的.html#枚举)。你应该学会如何使用它,这是非常宝贵的。 – 2012-04-13 11:52:47

+0

感谢您的回复。爱提供的帮助..... – lakesh 2012-04-13 11:55:09

+0

请注意,CamelCase名称通常是Python中的类名,而不是常规变量。 – phant0m 2012-04-13 12:35:41

回答

8

变化:

for rownum in range (rows): 

到:

for rownum in range (1, rows+1): 
5

range()也可以采取一个初始值:range(1, rows+1)

欲了解更多信息,请参阅Python Docs

+0

请注意,这引入了一个错误的错误。 – NPE 2012-04-13 11:53:08

+0

@aix true,已修复。 – mensi 2012-04-13 11:54:08

4

改变这一行:

for rownum in range (rows): 

分为:

for rownum in range (1, rows+1): 
1

只要改变

def routes(rows,current_row=0,start=0): 

def routes(rows,current_row=1,start=1):