2013-02-25 112 views
-5

這是我的代碼。在第一個def函數中,我讓它返回column_choose,並且我想在第二個def函數(get_data_list)中使用column_choose的值。我能做什麼?我已經嘗試了很多次。但IDLE總是顯示:全局名稱「column_choose」未定義。如何在第二個函數中使用第一個函數的返回值?

如何在第二個函數中使用column_choose的值? 順便說一下,我使用python 3.2

def get_column_number(): 
while True: 
    column_choose = input('What column:') 
    if column_choose == '1' or column_choose == '2' or column_choose == '3' or column_choose == '4' or column_choose == '5' or column_choose == '6': 
     column_choose = int(column_choose) 
     return column_choose 
     break 
    else: 
     print('bad column number, try again') 

def get_data_list(column_number): 
new_column_number = column_number.split(',') 
date_column = new_column_number[0] 
choose_column = new_column_number[column_choose-1] 

return result 

def main(): 
#Call get_input_descriptor 
get_input_descriptor() 
#Call get_column_number 
get_column_number() 

file_obj = open("table.csv", "r") 
for column_number in file_obj: 
    column_number = (column_number.strip()) 
    result = get_data_list(column_number) 
    print(result) 

file_obj.close() 
main() 
+0

你應該修改你的代碼,縮進錯誤 – 2013-02-25 03:47:17

回答

0

您需要將列號分配給變量。此外,您不需要break聲明,因爲您在返回後將其放入。

#Call get_column_number 
column_num = get_column_number() 

此外,我不確定你是否正確編寫代碼。該行 for column_number in file obj:正在迭代您的csv文件。如果你想訪問一個特定的列,你可以這樣做:

content = '' 
file_obj = open('table.csv','r') 
content = fle_obj.split(',') 
print(content[column_number]) 
+0

如何將列號分配給變量?現在它是一個局部變量。 – Vinceeema 2013-02-25 02:18:56

+0

謝謝兄弟!我已經知道了。 – Vinceeema 2013-02-26 01:29:59

0
  1. 你的縮進格式錯誤?

  2. 你必須使用returnget_column_number功能,所以你不需要使用後break

  3. 功能get_column_number返回一個變量,所以你可以使用它分配給一個變量

    就像:

    var = get_column_number() 
    

    ,然後使用VAR可變

  4. 如果你希望它是一個全局變量,你可以使用global

我認爲你需要閱讀一本Python書掌握基本knownledge

相關問題