【问题标题】:for loop indexing in pythonpython中的for循环索引
【发布时间】:2020-09-09 21:26:05
【问题描述】:

我的 for 循环有什么问题?我遇到了与数组索引相关的问题。

如何解决 for 循环中的索引问题? ''以月为单位的销售额: 季度 += 销售额''

创建月份列表和索引,并将季度设置为 0

months = [100, 100, 150, 250 , 300, 10, 20]
quarter = 0
quarters = []
index = 0

为季度创建for循环,打印结果,并增加索引

for sales in months:
  quarter += sales

  if index % 3 == 0 or index == len(months):
    quarters.append(quarter)
    quarter = 0

  index = index + 1

print("The quarter totals are Q1: {}, Q2: {}, Q3: {}".format(quarters[0], quarters[1], quarters[2]))

【问题讨论】:

标签: python for-loop indexing


【解决方案1】:

看起来你复制了一些缩进错误,但我的猜测是在你的代码中index = index + 1 被缩进到 if 块中,所以它会停止递增。您可以使用enumerate 来完全避免此类错误。

for index, value in enumerate(collection):
  print(index, value) # your code here

【讨论】:

    【解决方案2】:

    试试这个:

    # Month sales data
    month_sales = [100, 100, 150, 250, 300, 10, 20]
    # Empty list to hold quarter data
    quarter_sales = []
    # Current quarter iteration data
    quarter = 0
    
    # Iterate over monthly sales
    for index, sale in enumerate(month_sales):
        # Add month's sales to running total for the quarter
        quarter += sale
        # If last month of quarter or end of list
        if (index + 1) % 3 == 0 or index == len(month_sales) - 1:
            # Add quarter sales data to new list and start over
            quarter_sales.append(quarter)
            quarter = 0
    
    print(f"The quarter totals are Q1: {quarter_sales[0]}, Q2: {quarter_sales[2]}, Q3: {quarter_sales[2]}")
    

    您的索引存在问题

    例如,如果您的索引从 1 开始,index % 3 将起作用,但在编程列表中,索引从 0 开始。这相当于第 3 个月处于索引 2。由于 2 不能被 3 整除,因此它继续前进并将前四个月投入到第 1 季度,依此类推。您需要修改您的代码以使用(index + 1) % 3 == 0len(month_sales) -1 来解决此问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-11
      • 2011-12-07
      • 2018-03-16
      • 1970-01-01
      • 2013-03-20
      • 2021-07-08
      • 2014-01-14
      相关资源
      最近更新 更多