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 に答える