質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1155閲覧

処理順の関係上、未定義の関数の呼び出し方

sho8065

総合スコア6

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/23 21:11

編集2020/04/24 02:52

実現したいこと

python

1#終了するか尋ねる 条件によってsave_data関数も実行する 2def finish_check(coin_sum,savedata): 3 if coin_sum == 0: 4 finish_flag = True 5 else: 6 first_check = False 7 print("ゲームを終了しますか? 終了>>1 続行>>0") 8 while not first_check: 9 answer = input() 10 if answer == '1': 11 finish_flag = True 12 first_check = True 13 #main()を用いて未定義の関数を呼び出す 14 save_data(savedata) 15 elif answer == '0': 16 finish_flag = False 17 first_check = True 18 else: 19 print("Input Error") 20 return finish_flag 21 22#セーブするかを尋ねて、セーブする場合は結果をcsvに出力 23def save_data(savedata): 24 while True: 25 print("セーブしますか? Yes >> 1 , No >> 0") 26 answer = int(input()) 27 if answer == 1: 28 print("セーブするデータ番号を入力 >> ") 29 save_file = "Save" + input() + ".csv" 30 with open(save_file,"w") as file: 31 writer = csv.writer(file) 32 writer.writerows(savedata) 33 print("セーブ完了しました") 34 print("ゲームを終了します") 35 break 36 elif answer == 0: 37 print("セーブせずに終了します") 38 break 39 else: 40 print("Input Error")

というコードにおいて、
finish_check()内でsave_data()を使用しようとしても未定義のためエラーがおきます。
この2つの関数の記述順は変えずにこの処理を実行できるようにしたいです。

ちなみに関数のみを記述したファイルとその他を記述したファイルは別で作成して
インポートしてます。
できれば関数のみを記述したファイルの方だけで解決したいです。

https://techacademy.jp/magazine/19429
↑こちらのサイトのようにmain()関数を使ってみましたがうまくいきませんでした。

save_data()関数が定義される前に、
finish_check()関数内でsave_data()関数を呼び出しているのでエラーが起きるという認識で間違いないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2020/04/23 21:43

関数定義の順番に関係なく、普通に呼び出せると思いますけど。どこでエラーが出ましたか? なお、save_data を定義する前に finish_check を呼び出したらエラーになります。
ozwk

2020/04/24 02:56

エラーメッセージを書いてください
quickquip

2020/04/24 04:04

質問を編集した割には、依頼されたことを100%無視しましたね……
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問