python初心者です、エクセルのマクロで作成した占いの表計算をwebアプリとして作成してしております。
questionapp.py で データ入力
hyoukeisan.py で 計算を作成し、自作関数としました。(長くわかりにくくなるため、別のpyスクリプトとしました。)
hyoukeisan.pyから、questionapp.pyに計算結果渡したいのですが、配列の戻り値の表記方法が見当たりませんでした。
戻り値の表記と、受け取り側それぞれ工夫する必用があると思います。
(リスト内表記でお互い関連付けするのでしょうか? 別のpyスクリプトに渡す子ことでなくても同じ方法が必要かと思いますが)
このサイトも初めて知り不慣れなものでして、アドバイスよろしくお願いいたします。
questionapp.py
from flask import (
Flask, render_template,request,session,redirect, url_for
)
from wtforms import Form
from wtforms import StringField, DateField,RadioField, SelectField, SubmitField
import os
import hyoukeisan
app = Flask (name)
app.config['SECRET_KEY'] = 'mykey'
class UserForm(Form) :
name = StringField('name:')
gender = RadioField('性別:', choices=[('0','男'),('1','女性')])
birth = DateField('生年月日:', format = '%y/%m/%d')
seiji = SelectField('生時:',choices=[('0','??'),('1','0:00〜'),('2','1:00〜'),('3','3:00〜'),('4','5:00〜'),('5','7:00〜'),
('6','9:00〜'),('7','11:00〜'),('8','13:00〜'),('9','15:00〜'),('10','17:00〜'),('11','19:00〜'),('12','21:00〜'),('13','23:00〜')])
submit = SubmitField('送信')
@app.route('/', methods = ['GET','POST'])
def index():
form = UserForm(request.form)
if request.method == "POST" and form.validate():
session['name'] = form.name.data
session['gender'] = int(form.gender.data)
session['year'] = int(form.birth.data.strftime['%Y'])
session['month'] = int(form.birth.data.strftime['%m'])
session['day'] = int(form.birth.data.strftime['%d'])
session['seiji'] = int(form.seiji.data)
hyoukeisan(session['year'],session['month'],session['day'],session['seiji'],session['gender'])
戻り値 配列x2 ??? ここがわかりません。
return redirect(url_for('show'))
return render_template('form_birth4.html', form=form )
hyoukeisan.py (長くなるため、削除してあります。)
def meisiki(b_y, b_m, b_d, b_t, gender):
from flask import Flask, render_template
birth_y = b_y # Cells(4, 12) 生年
birth_m = b_m # Cells(4, 15) 生月
birth_d= b_d # Cells(4, 17) 生日
birth_t =b_t # Cells(4, 19) 生時
SEX = gender # 0 0:男 1:女
meisiki_array = [['' for i in range(1,3)] for j in range(1,5)] # 数値 i:横列 天干、地支 j:縦列 年月日時
daiunnum_array = [['' for i in range(1,3)] for j in range(1,13)] # 数値 i:横列 天干、地支 j:縦列 年月日時
# 出力配列 ここが戻り値にあたる配列です。
meisiki_array2 = [['' for i in range(1,9)] for j in range(1,5)] # 漢字 i:横列 全蔵干 蔵干 干通変 支通変 12運 空亡(k) j:縦列 年月日時
daiun_array2 = [['' for i in range(1,9)] for j in range(1,12)] # 数値 i:横列 天干、地支 j:縦列 年月日時
年の十干を求める
meisiki_array[0][0] = (gy + 7) % 10
if meisiki_array[0][0] == 0 :
meisiki_array[0][0] = 10
年の十二支を求める
meisiki_array[0][1] = (gy + 9) % 12
if meisiki_array[0][1] == 0 :
meisiki_array[0][1] = 12
for i in range(0,11) :
daiunnum_array[i][0] = meisiki_array[1][0] + i * DAIKEISU # 大運 十干
if daiunnum_array[i][0] == 1 :
daiun_array2[i][0] = "甲"
elif daiunnum_array[i][0] == 2 :
daiun_array2[i][0] = "乙"
daiunnum_array[i][1] = meisiki_array[1][1] + i * DAIKEISU # 大運 地支
if daiunnum_array[i][1] == 1 :
daiun_array2[i][1] = "子"
elif daiunnum_array[i][1] == 2 :
daiun_array2[i][1] = "丑"
return meisiki_array2[[i for i in range(0,9) ] j for j in range(0,5)],daiun_array2[[i for i in range(0,9) ] j for j in range(0,5)]
ここの戻り値 表記方法がわかりません。? 例えばリスト内表記?で渡すのでしょうか?
回答1件
あなたの回答
tips
プレビュー