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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

288閲覧

HTMLとpythonを改修したい

gotagota

総合スコア6

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/06/14 03:49

前提・実現したいこと

HTMLとpythonを改修したい

HTMLとPythonの改修について質問です。
pythonで作成したif文の結果をHTMLに反映させる方法がわかりません。
具体的には、bmiが~18.5までを瘦せがた18.5~25が普通、それ以上が肥満十いった具合に表示させたいと思っています。

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

肥満度のところに <function bmi at 0x05A57E30> と表示が出ました。

該当のソースコード

//HTMLのソースコード </head> <body> <nav class="navbar navbar-default navbar-fixed-top"> % include('navbar.html', active='bmi') </nav> <div class="container" style="margin-top:60px;padding:20px 0"> <h1>最新の健康状態</h1> <table class="table"> <tr><th>測定日</th><td>{{latest_date}}</td></tr> <tr><th>体重</th><td>{{weight}}</td></tr> <tr><th>身長</th><td>{{height}} </td></tr> <tr><th>BMI</th><td>{{bmi}}</td></tr> <tr><th>肥満度</th><td>やせ型、普通、太り気味</td></tr> //pythonのソースコード @route('/health-blood','POST') def health_blood_post(): ''' テンプレートのhtmlにグラフ描画のデータをAPIから取得し、 javascriptでグラフ画像を作成するやり方 ''' app_session = request.environ.get('beaker.session') params=read_settings(app_session['account_id']) request_params_key=['datetime','high_pressure','low_pressure','pulse'] # リクエストパラメータの値を取得 for key in request_params_key: params[key]=unicode(request.forms.get(key,''),'utf-8') conn = sqlite3.connect(FILENAME) db=conn.cursor() db.execute('''INSERT INTO blood_data (account_id ,datetime ,high_pressure ,low_pressure ,pulse ) VALUES(?,?,?,?,?)''', (params['account_id'], params['datetime'].replace('/','-') ,params['high_pressure'],params['low_pressure'],params['pulse'],)) conn.commit() db.close() return redirect('/health-blood') @route('/health-bmi', 'GET') def health_bmi(): ''' テンプレートのhtmlにグラフ描画のデータを埋め込み、 javascriptでグラフ画像を作成するやり方 ''' app_session = request.environ.get('beaker.session') params=read_settings(app_session['account_id']) db = sqlite3.connect(FILENAME ).cursor() rows=db.execute( '''SELECT * from bmi_data WHERE account_id=? order by DATE(date)''', (params['account_id'],) ).fetchall() db.close() records='' weight_hist='' params['bmi']='' params['height']='' params['weight']='' params['latest_date']='' for row in rows: latest_bmi=str(bmi(float(row[2]),float(row[3]))) date= sqlite2google(row[1]) records=records+"[new Date("+date+"),25,"+latest_bmi+",22,18.5,],\n\t" weight_hist=weight_hist+"[new Date("+date+"),"+str(row[3])+",],\n\t" params['bmi']=latest_bmi params['height']=str(row[2]) params['weight']=str(row[3]) params['latest_date']=sqlite2fmt(row[1],'/') if len(records)>0: params["records"]=records if len(weight_hist)>0: params["weight_hist"]=weight_hist return template('./views/health-bmi.html', params)

試したこと

(1) HTMLの
<tr><th>肥満度</th><td>やせ型、普通、太り気味</td></tr>

<tr><th>肥満度</th><td>{{result}}</td></tr>
に変更した。

(2)以下のif文を
params['latest_date']=sqlite2fmt(row[1],'/')
の下の行に加えてみた。
result= bmi
if result< 17:
print 'やせ型'
elif 17<= result <18.5:
print '痩せ気味'
elif 18.5<= result < 25:
print '普通'
elif 25<= result < 30:
print '太り気味'
else:
print '肥満'

params['result']=str(result)

(3)サーバーを起動し確認

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2018/06/14 05:20

DBから取得してきてセットした情報を渡せていて普通の文字列が渡せない理由が分からないんですが・・。「result」は単なる数字(BMI?)なので適当な変数にprint ではなく文字列詰めたらいいだけでは?
guest

回答1

0

どこかにbmiという名の関数があるように見えます。

python

1def sbmi(result): 2 if result< 17: 3 return 'やせ型' 4 elif 17<= result <18.5: 5 return '痩せ気味' 6 elif 18.5<= result < 25: 7 return '普通' 8 elif 25<= result < 30: 9 return '太り気味' 10 else: 11 return '肥満' 12result = sbmi(latest_bmi)

投稿2018/06/14 10:52

編集2018/06/14 10:56
mkgrei

総合スコア8560

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問