ユーザーの名前とパスワードを設定するプログラムを作っています。
関数内で定義した変数を関数外で使いたいのですが、エラーが出てしまいます。
このコードで言うと、user_nameとpasswordにあたるもののことです。
どうすれば、これらの変数を関数外でも使えるようになりますか?
これらの変数を関数外で扱う前に関数を実行しているので使えるかと思っていたのですが、違うようです。これは何故か、も回答していただけると嬉しいです。
python3
1def input_user_name(): 2 while True: 3 user_name = input("名前を入力してください: ") 4 if user_name: 5 print("あなたの名前は\"{}\"であってますか?".format(user_name)) 6 user_name_ok = input("はいorいいえ: ") 7 if user_name_ok == "はい": 8 print("保存します") 9 return user_name 10 elif user_name_ok == "いいえ": 11 print("正しい名前を入力してください") 12 print("") 13 continue 14 else: 15 print("はいorいいえを入力してください") 16 continue 17 else: 18 print("") 19 continue 20 21def input_password(): 22 print("") 23 print("passwordを設定します") 24 while True: 25 print("") 26 print("passwordは六字以上の整数でなければいけません") 27 print("") 28 password = input("your password: ") 29 password = str(password) 30 if password and len(password) >= 6: 31 try: 32 password = int(password) 33 except ValueError: 34 print("") 35 print("整数を入力してください") 36 continue 37 print("もう一度確認のために入力してください") 38 print("") 39 password_a = input("your password: ") 40 try: 41 password_a = int(password_a) 42 except ValueError: 43 print("") 44 print("整数を入力してください") 45 continue 46 if password == password_a: 47 print("保存します") 48 return password 49 elif password != password_a: 50 print("1回目に入力したpasswordと2回目に入力したpasswrdが違います") 51 print("1回目から入力しなおしてください") 52 continue 53 else: 54 pass 55 elif password and len(password) < 6: 56 print("六字以上の整数を入力してください") 57 continue 58 else: 59 print("passwordを入力してください") 60 pass 61 62def InConclusion(): 63 user_information = { "name":user_name , "password":password } 64 print("") 65 print(user_information) 66 67def user_start(): 68 user_name = input_user_name() 69 password = input_password() 70 InConclusion() 71 72print(user_start())
試したこと
関数内の処理の有効範囲を知るために関数について調べましたが、わかりませんでした。
追記
修正しましたが、NameErrorが発生してしまいます。
どこが問題なのかをご教授いただけると嬉しいです。
エラーコード↓
python3
1Traceback (most recent call last): 2 File "<stdin>", line 1, in <module> 3 File "<stdin>", line 4, in user_start 4 File "<stdin>", line 2, in InConclusion 5NameError: name 'user_name' is not defined
追記
皆様、回答ありがとうございました。
変数のグローバル化はなんとなく分かりました。必要な時には使えるよう、もっと多くのコードを書いてみようと思います。
スコープについてもなんとなく分かりました。サイトを漁ってきます。
少し聞きたいのですが、このレベルの質問はしない方が良いのでしょうか?
注目の質問に載っているものを見て思いました。
とりあえず、ベストアンサーを決めさせていただきます。
ありがとうございました!
回答3件
あなたの回答
tips
プレビュー