2013-10-15 155 views
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() 

回答

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() 
+0

谢谢Antti,我用这些全球和本地变量使我的生活复杂化 我太过分寻找答案。 – Pitchkrak