2013-10-15 258 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