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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

Q&A

解決済

1回答

758閲覧

python 関数内の変数について

taki.muramatsu

総合スコア7

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

0グッド

0クリップ

投稿2021/11/02 12:59

前提・実現したいこと

Difficult_Questionを呼び出した際にエラーが出ます

発生している問題・エラーメッセージ

例外が発生しました: UnboundLocalError local variable 'out_Integ' referenced before assignment

該当のソースコード

import tkinter as tk from tkinter import font import tkinter.ttk as ttk from sympy import * import random #シンボル定義 x = Symbol("x") y = Symbol("y") z = Symbol("z") a = Symbol("a") b = Symbol("b") c = Symbol("c") #問題定義 function_dic1 = {1:sin(x),2:cos(x),3:tan(x),4:exp(x),5:log(x)} function_dic2 = {1:sin(2*x),2:cos(2*x),3:tan(2*x)} def Basic_Question(Question_No,index1,index2,index3,Value1,Value2,Value3,Value4): if Question_No == 1: Integ = (1+x)**index1/x**index2 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "(1+x)^"+str(index1)+"/"+"x^"+str(index2) elif Question_No == 2: Integ = x**index1*(Value1*x+Value2)**index2 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "x^"+str(index1)+"("+str(Value1)+"x"+"+"+str(Value2)+")^"+str(index2) elif Question_No == 3: Integ = Value1*x**index1/(x**index2+Value2)**index3 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = str(Value1)+"x^"+str(index1)+"/"+"(x"+str(index2)+"+"+str(Value2)+")^"+str(index3) elif Question_No == 4: Integ = x*(x-Value1)**index1 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "x"+"(x-"+str(Value1)+")^"+str(index1) elif Question_No == 5: Integ = (Value1*x - Value2)*(Value3*x + Value4)**index1 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "("+str(Value1)+"x"+"-"+str(Value2)+")"+"("+str(Value3)+"x"+"+"+str(Value4)+")^"+str(index1) elif Question_No == 6: function_no = random.randint(1,5) funtcion_No = function_dic1[function_no] Integ = funtcion_No**index1 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = str(funtcion_No)+"^"+str(index1) elif Question_No == 7: function_no = random.randint(1,5) function_no_2 = random.randint(1,5) function_No = function_dic1[function_no] function_No_2 = function_dic1[function_no_2] if function_no == function_no_2: Integ = x*function_No**2 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "x"+str(function_No)+"^2" else: Integ = x*function_No*function_No_2**index1 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "x"+str(function_No)+str(function_No_2)+"^"+str(index1) elif Question_No == 8: function_no = random.randint(1,5) function_No = function_dic1[function_no] Integ = Value1+function_No**index1 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = str(Value1)+"+"+str(function_No)+"^"+str(index1) elif Question_No == 9: function_no = random.randint(1,3) function_No = function_dic2[function_no] Integ = Value1*function_No ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = str(Value1)+str(function_No) else: function_no = random.randint(1,3) function_No = function_dic2[function_no] Integ = Value1+function_No**index1 ans = ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = str(Value1)+"+"+str(function_No)+"^"+str(index1) return ans,out_Val,out_Integ def Standard_Question(Question_No,index1,index2,index3,Value1,Value2,Value3,Value4): if Question_No == 1: Integ = 1/sqrt(Value1+sqrt(x)) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "1/"+"√"+str(Value1)+"+"+"√x" elif Question_No == 2: Integ = x**index1*sqrt(x**index2+Value1) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "x^"+str(index1)+"√(x^"+str(index2)+"+"+str(Value1)+")" elif Question_No == 3: Integ = x**index1+Value1*x**index2*x/x**index1+1 ans = simplify(integrate(Integ)) out_Val = "x^"+str(index1)+"+"+str(Value1)+"x^"+str(index2)+"x"+"/"+"x^"+str(index1)+"1" elif Question_No == 4: Integ = x+Value1/Value2*sqrt(x+Value1) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "x"+"+"+str(Value1)+"/"+str(Value2)+"√(x+"+str(Value1)+")" elif Question_No == 5: Integ = Value1/exp(x)-exp(-x) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = str(Value1)+"/"+"e^x"+"-"+"e^-x" elif Question_No == 6: Integ = x**index1*log(x+1) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "x^"+str(index1)+"log(x+1)" elif Question_No == 7: Integ = log(x)/(x+Value1)**index1 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "log(x)/(x+"+str(Value1)+")^"+str(index1) elif Question_No == 8: Integ = log(x+sqrt(x**index1+Value1)) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "log(x+√x^"+str(index1)+"+"+str(Value1)+")" elif Question_No == 9: Integ = (Value1*x/x**index1+1)*log(x**2+1) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val= "("+str(Value1)+"x"+"/"+"x^"+str(index1)+"1)"+"log(x^2+1)" elif Question_No == 10: Integ = sqrt(x)*exp(sqrt(x)) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "√x"+"e^"+"√x" return ans,out_Integ,out_Val def Difficult_Question(Question_No): if Question_No == 1: Integ = 1/(x**3+1) ans = simplify(integrate(Integ,(x,0,1))) out_Integ = "∫" Range_min = "0" Range_max = "1" out_Val = "1/(x^3+1)" elif Question_No == 2: Integ = 1/sin(x)+cos(x)+1 ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "1/sin(x)+cos(x)+1" elif Question_No == 3: Integ = sin(x)/sin(x)+cos(x) ans = simplify(integrate(Integ,(x,0,pi/2))) out_Integ = "∫" Range_min = "0" Range_max = "π/2" out_Val = "sin(x)/sin(x)+cos(x)" elif Question_No == 4: Integ = log(x**2+1) ans = simplify(integrate(Integ,(x,0,1))) out_Integ = "∫" Range_min = "0" Range_max = "1" out_Val = "log(x^2+1" elif Question_No == 5: Integ = (sqrt(x**2+1))/x ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "√x^2+1/x" elif Question_No == 6: Integ = x*exp(x)*sin(x)*cos(x) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "xe^xsin(x)cos(x)" elif Question_No == 7: Integ = exp(-2*x)*sin(3*x) ans = simplify(integrate(Integ)) out_Integ = "∫" out_Val = "e^-2xsin(3x)" elif Question_No == 8: Integ = 2*x+1/sqrt(x**2+4) ans = simplify(integrate(Integ,(x,0,2))) out_Integ = "∫" Range_min = "0" Range_max = "2" out_Val = "2x+1/√x^2+4" elif Question_No == 9: Integ = (x+1)*sqrt(1-2*x**2) ans = simplify(integrate(Integ,(x,0,1/2))) Range_min = "0" Range_max = "1/2" out_Integ = "∫" out_Val = "(x+1)√(1-2x^2)" elif Question_No == 10: Integ = (1/x**2)*log(sqrt(1+x**2)) ans = simplify(integrate(Integ,(x,1,sqrt(3)))) Range_min = "1" Range_max = "√3" out_Integ = "∫" out_Val = "1/x^2log(√1+x^2)" return ans,out_Integ,out_Val,Range_min,Range_max

試したこと

global でエラーになっている変数を定義すると
今度はnameerrorになります
ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

数回に一回はエラーにならずアプリが表示されることがあります

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

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

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

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

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

guest

回答1

0

ベストアンサー

google翻訳
割り当て前に参照されるローカル変数 'out_Integ'

その変数が定義される前に使用された、というエラーです
if文のどれにも当てはまらなかった場合、その変数は定義されませんな

投稿2021/11/02 13:16

y_waiwai

総合スコア87800

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問