2013-02-25 79 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

相关问题