File size: 2,473 Bytes
99994b9 aaad170 99994b9 9493d12 99994b9 9493d12 95d22d5 9493d12 451ff78 9493d12 451ff78 95d22d5 451ff78 3b8fa45 d340ce3 451ff78 70a201e 95d22d5 b51800b 99994b9 9493d12 451ff78 99994b9 451ff78 b51800b 70a201e 451ff78 99994b9 9493d12 451ff78 bacbaea 451ff78 9493d12 451ff78 99994b9 451ff78 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | # 必要なライブラリをインポート
import streamlit as st
import random
from sympy import symbols, factor, Eq, solve, expand
# 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 generate_equation():
wh = random.choice([1, 2])
AExpression, sAExpression = None, None
if wh == 1:
a, b = [random.randint(min_value, max_value) for _ in range(2)]
init_problem = f"(x + {a})*(x + {b})"
AExpression = expand(init_problem)
elif wh == 2:
a, b = [random.randint(min_value, max_value) for _ in range(2)]
init_problem = f"{a} - {b}*x"
AExpression = expand(init_problem)
a, b = [random.randint(min_value, max_value) for _ in range(2)]
Secondarial_init_problem = f"{a} - {b}*x"
sAExpression = expand(Secondarial_init_problem)
return AExpression, sAExpression
def generate_problem():
a, b = [random.randint(min_value, max_value) for _ in range(2)]
if selected_function == "因数分解":
expression = expand(f"(x + {a})*(x + {b})")
elif selected_function == "方程式":
AExpression, sAExpression = generate_equation()
expression = Eq(AExpression, sAExpression) if sAExpression else Eq(AExpression, b)
return expression
# 問題生成ボタン
generate_button = st.button("問題を生成する")
if generate_button:
min_value = st.number_input("乱数の最小値を入力してください:", value=-10)
max_value = st.number_input("乱数の最大値を入力してください:", value=10)
expression = generate_problem()
# 生成した問題の表示
st.success(f"生成した問題: {expression}")
st.latex(expression)
# 解を求めるボタン
solve_button = st.button("解を求める")
if solve_button and selected_function == "方程式":
# 方程式の解を求める
solutions = solve(expression)
st.success(f"方程式の解: {solutions}")
|