1

我想创建一个循环来测试人们输入的名称是否是文本文件。我做了我的测试,但如果我要求人们重新输入文件名,它不会改变全局文件名。

我知道,这是一个全局变量和局部变量的问题,但我找不到改变它的方法。

这是我的代码:

def name():
    global f1
    global t
    global f2
    print('File Name')
    f1 = input()
    t = match(r'.+(\..+$)',f1)
    while t.group(1) != '.txt' :
            print(t.group(1))
            print("New file Name")
            f2 = input()
            f1 = f2
            print(f1)

name()
4

1 回答 1

2

我什至不知道为什么你需要全局变量,你为什么不把代码重写成如下所示:

from os.path import splitext

def get_name():
    while True:
        name = input("File name> ")
        if splitext(name)[1] != '.txt':
            print("Invalid name, give another")
        else:
            return name

filename = get_name()
于 2013-10-15T12:10:03.613 回答