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

Спасибо Антти, я усложнил свою жизнь тем глобальным и локальным переменным Я зашел слишком далеко, чтобы найти ответ. – Pitchkrak

Смежные вопросы