首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python脚本中没有定义名称'endCol‘

在python脚本中没有定义名称'endCol‘
EN

Stack Overflow用户
提问于 2020-04-08 07:19:28
回答 3查看 35关注 0票数 0

我不知道为什么我的变量没有定义。

我的代码:

代码语言:javascript
复制
    def menu():
            print("Please select the following option:\n 1. 1b\n 2. 2b\n 3. 3b\n 4. 4b\n 5. 5b\n")
            option = input()
            if option == "1":
                    endCol = 133
            if option == "2":
                    endCol = 135
            if option == "3":
                    endCol = 263
            if option == "4":
                    endCol = 519
            if option == "5":
                    endCol = 1031
    def filebrowser(ext=""):
            "Returns files with an extension"
            return [f for f in glob.glob(f"*{ext}")]
    menu()
    x = filebrowser(".csv")
    csv = input()
    df2 = pd.read_csv(csv, skiprows = range(62,125), usecols = range(3,endCol))

输出:

请选择下列选项:

  1. 1b
  2. 2b
  3. 3b
  4. 4b
  5. 5b

3(投入)

'abc.csv','def.csv','ghi.csv‘

def.csv (输入)

NameError:未定义名称“endCol”

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-08 07:27:18

变量endCol仅从函数menu中可见,您应该从函数中返回endCol

代码语言:javascript
复制
def menu():
    print("Please select the following option:\n 1. 1b\n 2. 2b\n 3. 3b\n 4. 4b\n 5. 5b\n")
    option = input()
    endCol = None
    if option == "1":
            endCol = 133
    if option == "2":
            endCol = 135
    if option == "3":
            endCol = 263
    if option == "4":
            endCol = 519
    if option == "5":
            endCol = 1031
    return endCol

endCol = menu()
票数 0
EN

Stack Overflow用户

发布于 2020-04-08 07:23:42

endColmenu函数中的一个局部变量,因此不能从外部使用。您可以返回所需的值并保存以供以后使用:

代码语言:javascript
复制
def menu():
        print("Please select the following option:\n 1. 1b\n 2. 2b\n 3. 3b\n 4. 4b\n 5. 5b\n")
        option = input()
        if option == "1":
                return 133
        if option == "2":
                return 135
        if option == "3":
                return 263
        if option == "4":
                return 519
        if option == "5":
                return 1031
def filebrowser(ext=""):
        "Returns files with an extension"
        return [f for f in glob.glob(f"*{ext}")]
endCol = menu()
x = filebrowser(".csv")
csv = input()
df2 = pd.read_csv(csv, skiprows = range(62,125), usecols = range(3,endCol))
票数 1
EN

Stack Overflow用户

发布于 2020-04-08 07:27:35

您必须(对于exmaple)在return endCol函数的最后一个if语句之后添加一个menu(),并在最后捕获返回值:

代码语言:javascript
复制
def menu():
    print("Please select the following option:\n 1. 1b\n 2. 2b\n 3. 3b\n 4. 4b\n 5. 5b\n")
    option = input()
    if option == "1":
        endCol = 133
    if option == "2":
        endCol = 135
    if option == "3":
        endCol = 263
    if option == "4":
        endCol = 519
    if option == "5":
        endCol = 1031
    return endCol

## when calling the menu() function:
V = menu()

### you can now work with the value V:

df2 = pd.read_csv(csv, skiprows=range(62,125), usecols=range(3, V))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61095266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档