qMath / app.py
OzoneAsai's picture
Update app.py
cf4d634
raw
history blame
3.18 kB
# 必要なライブラリをインポート
import streamlit as st
import random
from sympy import symbols, expand, Eq
# Streamlitアプリのタイトルを設定
st.title("数学問題アプリ")
# サイドバーに説明を追加
st.sidebar.header("構文説明")
st.sidebar.markdown("$2x$と書きたい場合は「$2*x$」と、記述するように。また、平方根は$sqrt(2)$というように記述するように。")
st.sidebar.markdown("割り算は`/`を使うように。掛け算は`*`を使うように。")
# メインのコンテンツを作成
selected_function = st.sidebar.selectbox("問題形式を選択", ["因数分解","方程式"])
x = symbols("x")
def factor_expression(expression):
x = symbols('x')
factored_expression = factor(expression)
st.success(f"因数分解結果: {factored_expression}")
st.latex(factored_expression)
def generate_equation():
x = symbols('x')
generated_problems = []
# 例: x**2 + 5*x + 6
wh=random.choice(["1","2"])
if wh==1:
a = random.randint(min_value, max_value)
b = random.randint(min_value, max_value)
init_problem = f"(x + {a})*(x + {b})"
AExpression = expand(init_problem)
if wh==2:
a = random.randint(min_value, max_value)
b = random.randint(min_value, max_value)
init_problem = f"{a}*x + {b}"
AExpression = expand(init_problem)
a = random.randint(min_value, max_value)
b = random.randint(min_value, max_value)
Secondarial_init_problem = f"{a}*x + {b}"
sAExpression = expand(Secondarial_init_problem)
# 方程式の作成
equation = Eq(AExpression, sAExpression)
return equation
# 因数分解
if selected_function == "因数分解":
min_value = st.number_input("乱数の最小値を入力してください:", value=-10)
max_value = st.number_input("乱数の最大値を入力してください:", value=10)
# 生成ボタン
generate_button = st.button("問題を生成する")
if generate_button:
generated_problems = []
# 例: x**2 + 5*x + 6
a = random.randint(min_value, max_value)
b = random.randint(min_value, max_value)
init_problem = f"(x + {a})*(x + {b})"
expression = expand(init_problem)
if expression:
st.success(f"問題: {expression}")
st.latex(expression)
if selected_function == "方程式":
min_value = st.number_input("乱数の最小値を入力してください:", value=-10)
max_value = st.number_input("乱数の最大値を入力してください:", value=10)
# 生成ボタン
generate_button = st.button("問題を生成する")
if generate_button:
# 方程式の生成
equation = generate_equation()
# 生成した方程式の表示
st.success(f"生成した方程式: {equation}")
st.latex(equation)
# 解を求めるボタン
solve_button = st.button("解を求める")
if solve_button:
# 方程式の解を求める
solutions = solve(equation)
st.success(f"方程式の解: {solutions}")