簡體   English   中英

如何在 Python 2.7 中將 while 語句重寫為 if 語句?

[英]How to re-write a while statement as an if statement in Python 2.7?

我編寫了一個腳本,用於在 Excel 文檔中搜索“X”,當它找到“X”時,它會將與“X”關聯的第一列和第一行復制到 CSV 文件中。

有人告訴我,使用“if”語句有更好的方法來做到這一點。 不太確定如何。

這是代碼:

 import xlrd
 import csv

 ###Grab the data from sheet 1
 def get_row_values(workSheet, row):
    to_return = []
     num_cells = myWorksheet.ncols - 1
    curr_cell = -1
    while curr_cell < num_cells:
        curr_cell += 1
        cell_value = myWorksheet.cell_value(row, curr_cell)
        to_return.append(cell_value)
     return to_return

 file_path = 'foo.xlsx'
 output = []

 #Write the data
 myWorkbook = xlrd.open_workbook(file_path)
 myWorksheet = myWorkbook.sheet_by_name('foosheet')
 num_rows = myWorksheet.nrows - 1
 curr_row = 0
 column_names = get_row_values(myWorksheet, curr_row)
 #print("TOTAL ENTRIES:") 
 #print len(column_names)
 #print("-----")
 framework_name = myWorksheet.cell(0,2)
 framework_version = myWorksheet.cell(0,3)
 while curr_row < num_rows:
        curr_row += 1 
        row = myWorksheet.row(curr_row)
        this_row = get_row_values(myWorksheet, curr_row)
        x = 0
        while x <len(this_row):
            if this_row[x] == 'x':
                output.append(['', fooname, foo_version, 
 foo_names[x], foo_row[0]])
                myData = [["foo1", "foo2", 
 "foo3", "foo4", "foo5"]]

                myFile = open('./results/barTemp.csv', 'w')
                with myFile:
                        writer = csv.writer(myFile)
                        writer.writerows(myData)
                        writer.writerows(output)

            x += 1

 #print output



 myFile.close()
 myWorkbook.release_resources()

它不一定更好。 仍然是相同的運行時復雜性。

不同之處在於更緊湊的線條:

例如,您可以更改

而 x < len(this_row):

對於 this_row 中的 x:

但我看到您使用 'x' 索引來查找 column_names[x] 所以另一種方法可能更好,例如

對於范圍內的 x(len(this_row)):

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM