Update app.py
Browse files
app.py
CHANGED
|
@@ -16,77 +16,81 @@ selected_function = st.sidebar.selectbox("問題形式を選択", ["因数分解
|
|
| 16 |
x = symbols("x")
|
| 17 |
|
| 18 |
|
| 19 |
-
def factor_expression(expression):
|
| 20 |
-
x = symbols('x')
|
| 21 |
-
factored_expression = factor(expression)
|
| 22 |
-
|
| 23 |
-
st.success(f"因数分解結果: {factored_expression}")
|
| 24 |
-
st.latex(factored_expression)
|
| 25 |
-
|
| 26 |
-
|
| 27 |
def generate_equation():
|
| 28 |
-
x = symbols('x')
|
| 29 |
-
generated_problems = []
|
| 30 |
-
# 例: x**2 + 5*x + 6
|
| 31 |
wh = random.choice([1, 2])
|
|
|
|
|
|
|
| 32 |
if wh == 1:
|
| 33 |
-
a = random.randint(min_value, max_value)
|
| 34 |
-
b = random.randint(min_value, max_value)
|
| 35 |
init_problem = f"(x + {a})*(x + {b})"
|
| 36 |
AExpression = expand(init_problem)
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
a = random.randint(min_value, max_value)
|
| 40 |
-
b = random.randint(min_value, max_value)
|
| 41 |
init_problem = f"{a}*x + {b}"
|
| 42 |
AExpression = expand(init_problem)
|
| 43 |
-
|
| 44 |
-
b = random.randint(min_value, max_value)
|
| 45 |
Secondarial_init_problem = f"{a}*x + {b}"
|
| 46 |
sAExpression = expand(Secondarial_init_problem)
|
| 47 |
-
# 方程式の作成
|
| 48 |
-
equation = Eq(AExpression, sAExpression)
|
| 49 |
|
| 50 |
-
return
|
| 51 |
|
| 52 |
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
min_value = st.number_input("乱数の最小値を入力してください:", value=-10)
|
| 56 |
-
max_value = st.number_input("乱数の最大値を入力してください:", value=10)
|
| 57 |
|
| 58 |
-
|
| 59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
|
| 61 |
-
if generate_button:
|
| 62 |
-
generated_problems = []
|
| 63 |
-
# 例: x**2 + 5*x + 6
|
| 64 |
-
a = random.randint(min_value, max_value)
|
| 65 |
-
b = random.randint(min_value, max_value)
|
| 66 |
-
init_problem = f"(x + {a})*(x + {b})"
|
| 67 |
-
expression = expand(init_problem)
|
| 68 |
-
if expression:
|
| 69 |
-
st.success(f"問題: {expression}")
|
| 70 |
-
st.latex(expression)
|
| 71 |
|
| 72 |
-
|
|
|
|
|
|
|
|
|
|
| 73 |
min_value = st.number_input("乱数の最小値を入力してください:", value=-10)
|
| 74 |
max_value = st.number_input("乱数の最大値を入力してください:", value=10)
|
| 75 |
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
st.latex(equation)
|
| 85 |
|
| 86 |
-
|
| 87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
|
| 89 |
-
if solve_button:
|
| 90 |
-
# 方程式の解を求める
|
| 91 |
-
solutions = solve(equation)
|
| 92 |
-
st.success(f"方程式の解: {solutions}")
|
|
|
|
| 16 |
x = symbols("x")
|
| 17 |
|
| 18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
def generate_equation():
|
|
|
|
|
|
|
|
|
|
| 20 |
wh = random.choice([1, 2])
|
| 21 |
+
AExpression, sAExpression = None, None
|
| 22 |
+
|
| 23 |
if wh == 1:
|
| 24 |
+
a, b = [random.randint(min_value, max_value) for _ in range(2)]
|
|
|
|
| 25 |
init_problem = f"(x + {a})*(x + {b})"
|
| 26 |
AExpression = expand(init_problem)
|
| 27 |
+
elif wh == 2:
|
| 28 |
+
a, b = [random.randint(min_value, max_value) for _ in range(2)]
|
|
|
|
|
|
|
| 29 |
init_problem = f"{a}*x + {b}"
|
| 30 |
AExpression = expand(init_problem)
|
| 31 |
+
|
| 32 |
+
a, b = [random.randint(min_value, max_value) for _ in range(2)]
|
| 33 |
Secondarial_init_problem = f"{a}*x + {b}"
|
| 34 |
sAExpression = expand(Secondarial_init_problem)
|
|
|
|
|
|
|
| 35 |
|
| 36 |
+
return Eq(AExpression, sAExpression)
|
| 37 |
|
| 38 |
|
| 39 |
+
def generate_problem():
|
| 40 |
+
a, b = [random.randint(min_value, max_value) for _ in range(2)]
|
|
|
|
|
|
|
| 41 |
|
| 42 |
+
if selected_function == "因数分解":
|
| 43 |
+
expression = expand(f"(x + {a})*(x + {b})")
|
| 44 |
+
elif selected_function == "方程式":
|
| 45 |
+
expression = generate_equation()
|
| 46 |
+
|
| 47 |
+
return expression
|
| 48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
+
# 問題生成ボタン
|
| 51 |
+
generate_button = st.button("問題を生成する")
|
| 52 |
+
|
| 53 |
+
if generate_button:
|
| 54 |
min_value = st.number_input("乱数の最小値を入力してください:", value=-10)
|
| 55 |
max_value = st.number_input("乱数の最大値を入力してください:", value=10)
|
| 56 |
|
| 57 |
+
expression = generate_problem()
|
| 58 |
+
|
| 59 |
+
# 生成した問題の表示
|
| 60 |
+
st.success(f"生成した問題: {expression}")
|
| 61 |
+
st.latex(expression)
|
| 62 |
|
| 63 |
+
# 解を求めるボタン
|
| 64 |
+
solve_button = st.button("解を求める")
|
|
|
|
| 65 |
|
| 66 |
+
if solve_button and selected_function == "方程式":
|
| 67 |
+
# 方程式の解を求める
|
| 68 |
+
solutions = solve(expression)
|
| 69 |
+
st.success(f"方程式の解: {solutions}")
|
| 70 |
+
|
| 71 |
+
#
|
| 72 |
+
#
|
| 73 |
+
#
|
| 74 |
+
#
|
| 75 |
+
#
|
| 76 |
+
#
|
| 77 |
+
|
| 78 |
+
# 因数分解
|
| 79 |
+
#if selected_function == "因数分解":
|
| 80 |
+
# min_value = st.number_input("乱数の最小値を入力してください:", value=-10)
|
| 81 |
+
# max_value = st.number_input("乱数の最大値を入力してください:", value=10)
|
| 82 |
+
#
|
| 83 |
+
# # 生成ボタン
|
| 84 |
+
# generate_button = st.button("問題を生成する")
|
| 85 |
+
#
|
| 86 |
+
# if generate_button:
|
| 87 |
+
# generated_problems = []
|
| 88 |
+
# # 例: x**2 + 5*x + 6
|
| 89 |
+
# a = random.randint(min_value, max_value)
|
| 90 |
+
# b = random.randint(min_value, max_value)
|
| 91 |
+
# init_problem = f"(x + {a})*(x + {b})"
|
| 92 |
+
# expression = expand(init_problem)
|
| 93 |
+
#if expression:
|
| 94 |
+
# st.success(f"問題: {expression}")
|
| 95 |
+
# st.latex(expression)
|
| 96 |
|
|
|
|
|
|
|
|
|
|
|
|