【发布时间】:2016-03-03 05:02:35
【问题描述】:
从“Excel Image 1”中,我将数据拉入A列和B列的python。目标是对B列的值求和,看看它是否高于或低于给定的1500的总和。如果它高于或等于 1500,则无需执行任何操作。但是,如果较低,则调整旁边带有“更改”字样的值,使计算的总和变为 1500 或更多。在我们的例子中,总和是 700,低于 1500。
import xlrd
excel = '/Users/Bob/Desktop/'
wb1 = xlrd.open_workbook(excel + 'assignment2.xlsx')
sh1 = wb1.sheet_by_index(0)
colA,colB = [],[]
for a in range(3,sh1.nrows):
colA.append(int(sh1.cell(a,0).value))
colB.append(int(sh1.cell(a,1).value))
print(colA)
print(colB)
excel_sum=(sh1.cell_value(2,1))
print("Given Sum:", excel_sum)
calc_sum = sum(colB)
print(calc_sum)
if calc_sum >= excel_sum:
print("Good")
#else:
#Need to adjust the values that has the words "change" beside them
电流输出:
[0, 1, 2, 3, 4]
[900, -400, -200, 300, 100]
Given Sum: 1500.0
700
谢谢!
【问题讨论】:
-
C 列中的“变化”也是如此吗?而目标是改变后B列的总和减少到1500或更多,那么改变的算法是什么(对所有改变的单元格进行统一调整,使所有改变的单元格都达到相同的值以达到目标)?
-
没有。 B3 中给出的 1500 只是告诉我们,这是我们将 B4 添加到 B8 时应该得到的总和。但是,当我们添加它们时,我们没有。我们只有700。所以,我们需要调整B6和B8,因为C6和C8有“变化”二字,这样当我们再次相加时,总和为1500或更多。我认为应该有 if-else 语句将总和与给定总和进行比较。
-
@ChrisFreeman 这有意义吗?
-
应该如何调整?在所有
change元素之间均匀分布不同?还是与他们的价值观成正比?还是……? -
@Austin Hastings 不管你怎么做,只要你改变它们的值是正的,我们只改变 B6 和 B8 中的值,因为我们只允许根据到单元格 C6 和 C8。此代码适用于任何具有相同格式的 Excel 文件。
标签: python excel if-statement for-loop sum