2016-04-26 2 views
0

このコードはユーザが名前を入力できるようにするためのものですが、数字を入力するとエラーが表示されます! ')、名前を再度入力するように促します。このプロセスは、ユーザーが数字のない文字列を入力するまでループし続けます。ユーザがDef内で定義した変数を呼び出す際のNameError - Python 3.x

if not any(char.isdigit() for char in name): 
    break 

純粋なアルファベットはstring-を入力する場合

しかし、その後ループが破壊され、入力の結果は、後のプログラムで使用するためのリストに変換されます。 ループが壊れているとき、私はこのエラーを取得:

namelist = list(name.lower().strip(" ")) 
NameError: name 'name' is not defined 

あなたは以下を参照することができますように、私はすでに内の入力の結果として、変数名を定義している。ここは、エラーがの出番ですnaming()定義。私は間違って何をしていますか?助けてくれてありがとう!

def naming(): 
name = input ("please input your name: ") 
while any(char.isdigit() for char in name): 
    print ("\nNo numbers please!\n") 
    naming() 

    if not any(char.isdigit() for char in name): 
     break 


naming() 


#making the name into a list 
namelist = list(name.lower().strip(" ")) 
+0

名前は*その関数に対してローカルです。外部にアクセスする必要がある場合は、 'return'して割り当てます。 – jonrsharpe

+1

あなたのインデントが正しくありません。あなたの質問でもう一度チェックしてください。 –

答えて

1

nameあなたがnamelistのグローバルスコープでそれにアクセスすることはできません理由でのみ機能に制限され、その範囲を、持っています。

これを解決する1つの方法は、あなたの関数から値を返すことです:機能*内に定義されて

def get_name(): 
    name = input ("please input your name: ") 
    while any(char.isdigit() for char in name): 
     print ("\nNo numbers please!\n") 
     name = input ("please input your name: ") 
    return name 

name = get_name() 
namelist = list(name.lower().strip(" ")) 
+0

あなたの答えをありがとう - それは動作します! – Caleb

関連する問題