PythonのIDLEからSqlite3を使っています。
青,黄,赤の3色から好きな色選んでもらうHTMLのWEBベースのアンケート調査をしています。
アンケートを答えた人数から,各色の好きな人数の割合(%)を求めたいのですが,どなたか教えていただけますでしょうか?
割合(%)にしたい部分の表示は,現在人数の表示になっています。
from
1import sqlite3 2 3@route('/',method='get') 4def index_home(): 5 return indexform #入力画面を呼び出す 6 7@route('/',method='post') 8def index_input(): 9 #入力された値(出席番号, 氏名, 色)を取得 10 id = request.forms.id 11 name = request.forms.name 12 color = request.forms.fcolor 13 #データベースに接続して入力された値をデータベースに入力 14 conn = sqlite3.connect('colordb.sqlite3') 15 cur = conn.cursor() 16 cur.execute('insert into fc values(?,?,?)', (id, name, color)) 17 conn.commit() 18 conn.close() 19 return indexform #次の入力を促すために入力画面を呼び出す 20 21#入力画面 22indexform = ''' 23<form action='/' method='post'> 24 <p>好きな色を集計します.</p> 25 <p>出席番号と氏名を入力後半角英数字でもれなく入力し,送信ボタンを押してください.</p> 26 <p>出席番号<input type='text' name='id'></p> 27 <p>氏名(ローマ字)<input type='text' name='name'></p> 28 <p>次のうちから,好きな色を選んでください.</p> 29 <p><input type='radio'checked name='fcolor' value='1'>青 30 <input type='radio' name='fcolor' value='2'>黄 31 <input type='radio' name='fcolor' value='3'>赤</p> 32 <p><input type='submit' value='送信'></p> 33 <a href='/result'>集計結果</a> 34</form> 35''' 36 37 38#結果 39@route('/result') 40def result(): 41 #データベースに接続 42 conn = sqlite3.connect('colordb.sqlite3') 43 cur = conn.cursor() 44 cur.execute('select count(color) from fc where color=1') 45 blue = cur.fetchone()[0] 46 cur.execute('select count(color) from fc where color=2') 47 yellow = cur.fetchone()[0] 48 cur.execute('select count(color) from fc where color=3') 49 red = cur.fetchone()[0] 50 conn.close() 51 return '''<p> 集計結果 </p> 52 <p> 青が好きな人は{0}人です.</p> 53 <p> 黄が好きな人は{1}人です.</p> 54 <p> 赤が好きな人は{2}人です.</p> 55 <p><a href=\'/\'>入力画面に戻る</a></p>'''.format(blue, yellow, red) 56 57 58#テーブルの作成(すでに存在するなら削除して,作成) 59@route('/create') 60def create(): 61 conn = sqlite3.connect('colordb.sqlite3') 62 cur = conn.cursor() 63 cur.execute('drop table if exists fc') #すでに存在するなら削除 64 cur.execute('''create table fc 65 (id integer not null, 66 name text not null, 67 color integer, 68 primary key (id))''') 69 conn.commit() 70 conn.close() 71 return '<p>テーブルを作成しました</p>' 72 73 74run(host='0.0.0.0',port=80) 75
回答1件
あなたの回答
tips
プレビュー