每次代碼回圈時,我都會遇到將串列值插入新行的問題。簡而言之,我需要每個代碼,它每次都會回圈將值寫入lst單獨的行。我進行了廣泛的研究,試圖了解它是如何作業的,并找到了大量示例,但不幸的是,我無法按照這些示例使代碼作業。
這是代碼:
max_value = 5
lst = []
while True:
wb = Workbook()
ws = wb.active
num = (max_value)
for n in range(num):
weight = float(input('Weight: '))
lst.append(weight)
ws.append(lst)
if n 1 == max_value:
wb.save(filename='path')
我試圖ws.insert_rows(idx=2, amount=1)在這樣的行之后添加ws.append(lst):
...
ws.insert_rows(idx=2, amount=1)
ws.append(lst)
if n 1 == max_value:
wb.save(filename='path')
但它沒有做任何事情,因為我想它需要一些東西來告訴代碼在該行中寫入下一個值。我也嘗試過這樣的事情:
...
next_avail_row = len(list(ws.rows))
ws.append(lst)
if n 1 == max_value
wb.save(filename='path')
但在這里,我也不確定如何在找到next_avail_row = len(list(ws.rows))該行寫入后告訴代碼。
想法?
編輯:
目前,如果我在提示符下輸入例如:1,2,3,4,5
它輸出:

如果我繼續輸入數字,例如:7,6,5,4,3
它輸出:

等等,我期望的是:

簡而言之,每次呼叫該函式時,它都會寫入同一個檔案中,但在下面的一行中。我希望這是一個清楚的解釋。
uj5u.com熱心網友回復:
您的代碼有幾個問題。
首先,在你的while回圈中。每次它回圈時都會呼叫wb = Worbook()并最終呼叫wb.save(filename='path'). 這是每次都創建一個新的 Excel 作業表。假設wb.save()每次呼叫時檔案名都相同,每次在新作業簿上呼叫 save 時,它??都會用相同的檔案名覆寫以前制作的作業簿。
接下來,包含weight您輸入的值的串列。您沒有清除串列,因此每次在回圈中向其添加內容時,串列都會不斷擴展。
此外,該行num = (max_value)實際上并沒有做任何事情,而且您還需要有某種條件才能跳出while回圈。使用while True將使回圈永遠持續下去,除非你在某個時候打破它。
下面是一些應該按照您希望的方式執行此操作的代碼:
max_value = 5
line_count = 0
wb = Workbook()
ws = wb.active
white True:
lst = []
for n in range(max_value):
weight = float(input('Weight: '))
lst.append(weight)
ws.append(lst)
line_count = 1
# an example condition to break out of the loop
if line_count >= 5:
break
wb.save(filename='path')
在這里,您的Workbook物件僅被創建和保存一次,因此它不會每次都打開一個新的并覆寫之前的Workbook. lst每次通過回圈都會清空串列,因此您的行將只與 中的值一樣長max_value。我還添加了一個打破while True:回圈的示例方式。我設定它的方式是,一旦您添加到作業簿中的 5 行,它就會跳出回圈。您可以創建任何想要跳出回圈的條件,這僅用于示例目的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399154.html
標籤:Python 蟒蛇-3.x for循环 while 循环 打开pyxl
上一篇:將長代碼撰寫為嵌套串列理解
