2017-03-03 469 views
0

我希望此代码获得15倍的数据量。当它运行时,第一次进入所有的for循环,然后打印出答案,但是当它在“for num in range(0,15):”循环中第二次循环时,插入到“for df in page:”中,然后不会深入到其他循环中,只会返回“page_counter”,因为它应该是200。Python嵌套for循环只运行一次,然后跳过其余的迭代

我应该怎么做才能让它在每次“for num in range(0,15):”循环中运行最后的嵌套for循环?

import pandas as pd 

symbol = 0 
for num in range(symbol,1): 
    page_counter =0 
    right = 1 
    down = 0 
    for num in range(0,15): 
     page = pd.read_html('https://www.google.com/finance/historical?q=a&startdate=Jan+1%2C+2005&enddate=Mar+2%2C+2017&num=200&ei=Aom4WPizNcWO2AaSnZ3YBg'+ str(page_counter), attrs = {'class': 'gf-table'}, header=0) 

     for df in page: 
      for num in range(down,200): 
       open_data = df.at[down, 'Open'] 
       high_data = df.at[down, 'High'] 
       low_data = df.at[down, 'Low'] 
       close_data = df.at[down, 'Close'] 
       #volume_data = df.at[down, 'Volume'] 

       print(open_data) 

       down += 1 
     page_counter += 200 
     print(page_counter) 
     symbol += 1 

P.S.我知道我的代码现在有点笨拙,这只是我的一个快速想法。

+1

您在循环的内部循环和外部循环中都使用了相同的num变量。您可能希望为每个循环使用不同的变量名称。 – AKS

回答

2

第一运行向下= 200,以便该环路不满足for num in range(down,200):范围条件后向下声明= 0内for num in range(0,15):

import pandas as pd 

symbol = 0 
for num in range(symbol,1): 
    page_counter =0 
    right = 1 
    for num in range(0,15): 
     down = 0 
     page = pd.read_html('https://www.google.com/finance/historical?q=a&startdate=Jan+1%2C+2005&enddate=Mar+2%2C+2017&num=200&ei=Aom4WPizNcWO2AaSnZ3YBg'+ str(page_counter), attrs = {'class': 'gf-table'}, header=0) 

     for df in page: 
      for num in range(down,200): 
       open_data = df.at[down, 'Open'] 
       high_data = df.at[down, 'High'] 
       low_data = df.at[down, 'Low'] 
       close_data = df.at[down, 'Close'] 
       #volume_data = df.at[down, 'Volume'] 

       print(open_data) 

       down += 1 
     page_counter += 200 
     print(page_counter) 
     symbol += 1 
+0

我会,但是对于我的实际代码,down = 0必须在那里,因为它正在写入Excel表单中的特定单元格。所以,单元格会覆盖。感谢 –

+0

@AlexBorland'在范围内(向下,200):'这只会在你的代码中执行一次,或者你可以使用另一个变量。 – 2017-03-03 06:37:25

+0

我第一次尝试它没有奏效,因为我没有改变它们。它在那之后工作。谢谢 –