えくすとらんのブログ: 10月 2019

python3で畑で使う施肥量計算機ちょっとつくってみた





#!/usr/bin/python
# -*- coding: utf-8 -*-

#施肥量計算
class Sehi:
    def __init__(self,kg,N,P,K):
        self.kg = kg
        self.N = int(N)*10
        self.P = int(P)*10
        self.K = int(K)*10

    def seibunryou(self):
        seibunryou_N = int(self.kg) * int(self.N)
        seibunryou_P = int(self.kg) * int(self.P)
        seibunryou_K = int(self.kg) * int(self.K)
        print("一袋あたり"+ "(N)"+ str(seibunryou_N)+"g"+"(P)"+str(seibunryou_P)+"g"+"(K)"+str(seibunryou_K)+"g")

#施肥データ
class Yasai:
    def __init__(self,name,hasyu,uetsuke,sehin,sehip,sehik,oigoe):
        self.name = name
        self.hasyu = hasyu
        self.uetsuke = uetsuke
        self.sehin = sehin
        self.sehip = sehip
        self.sehik = sehik
        self.oigoe = oigoe

    def yasai_data_load(self):
        print("******************************************")
        print("品名: "+ self.name)
        print("播種時期: "+ self.hasyu)
        print("植え付け時期: "+ self.uetsuke)
        print("施肥量(N)(kg/10a): "+ str(self.sehin))
        print("施肥量(P)(kg/10a): "+ str(self.sehip))
        print("施肥量(K)(kg/10a): "+ str(self.sehik))
        print("追肥の目安(npk)(kg/10a): "+ self.oigoe)

    def m_change(self):
        mcn = int(self.sehin)/10
        mcp = int(self.sehip)/10
        mck = int(self.sehik)/10
        print("******************************************")
        print("1rあたりの施肥量は")
        print("N: "+ str(mcn)+ "kg")
        print("P: "+ str(mcp)+ "kg")
        print("K: "+ str(mck)+ "kg")

kabocya = Yasai("かぼちゃ","3月下旬","4月下旬",15,15,15,"20 10 15")
kyuri = Yasai("きゅうり","5月上旬","5月下旬",30,30,30,"20 0 10")
suika = Yasai("すいか","4月中旬","6月中旬",10,10,10,"10 5 5")
meron = Yasai("メロン","3月上旬","4月上旬",15,20,15,"- - -")
tomato = Yasai("トマト","3月中旬","5月中旬",15,25,10,"15 0 10")
piman = Yasai("ピーマン","2月上旬","4月中旬",25,25,20,"20 20 15")
ichigonae = Yasai("イチゴ苗床","7月上旬","-",1,3,2,"(kg/a)")
ichigo = Yasai("イチゴ","7月上旬","9月上旬",15,20,20,"10 5 5")
nasu = Yasai("なす","3月上旬","5月中旬",30,30,30,"15 10 15")
okura = Yasai("オクラ","2月上旬","3月下旬",30,30,30,"15 10 15")
nira = Yasai("にら","12月上旬","4月上旬",12,25,15,"30 0 19")
miendou = Yasai("実えんどう","9月下旬","-",5,20,10,"10 0 5")
sayaendou = Yasai("さやえんどう","8月上旬","-",6,25,10,"7 0 9")
ingen = Yasai("いんげん","8月中旬","-",14,20,20,"0 0 0")
toumorokoshi = Yasai("とうもろこし","3月下旬","-",30,30,25,"6 0 7")
gobou = Yasai("ごぼう","3月上旬","-",14,25,16,"8 0 6")
rakkyou = Yasai("らっきょう","9月上旬","-",8,20,10,"5 0 5")
rifuretasu = Yasai("リーフレタス","9月下旬","10月下旬",20,20,20,"-")
kekkyuretasu = Yasai("結球レタス","7月下旬","8月下旬",25,25,25,"-")
daikonn = Yasai("大根","9月上旬","-",15,20,12,"10 0 10")
bareisyo = Yasai("じゃがいも","1月下旬","-",17,20,18,"8 0 0")
satoimo = Yasai("さといも","4月上旬","-",14,23,12,"6 0 8")
kansyo = Yasai("かんしょ","3月上旬(種芋定植)","5月上旬",5,12,15,"-")
ninjin = Yasai("にんじん","8月上旬","-",15,20,15,"5 0 5")
syouga = Yasai("しょうが","4月中旬","-",20,20,20,"10 10 10")
shishitou = Yasai("ししとうがらし","1月上旬","3月下旬",20,20,20,"25 15 15")
nigauri = Yasai("にがうり","3月下旬","4月下旬",20,16,20,"13 8 11")
burokkuri = Yasai("ブロッコリー","8月中旬","9月下旬",15,20,15,"10 5 10")
soramame = Yasai("そらまめ","8月上旬","10月上旬",15,15,15,"5 5 5")
kyabetsu = Yasai("キャベツ","9月下旬","11月上旬",15,15,15,"10 5 10")
hakusai = Yasai("はくさい","9月下旬","11月上旬",15,15,15,"10 5 10")
hourensou = Yasai("ほうれん草","9月上旬","-",10,10,10,"5 0 5")
syungiku = Yasai("春菊","8月下旬","-",15,15,10,"10 0 10")
konegi = Yasai("小ねぎ","4月上旬","-",15,10,15,"25 15 20")
tamanegi_ikubyou = Yasai("玉ねぎ(育苗)","-","-",0.5,0.5,0.5,"(kg/50m2)")
tamanegi = Yasai("玉ねぎ","9月上旬","10月下旬",15,20,15,"10 5 5")

sehidetas=[kabocya,kyuri,suika,meron,tomato,piman,ichigonae,ichigo,
             nasu,okura,nira,miendou,sayaendou,ingen,toumorokoshi,gobou,
             rakkyou,rifuretasu,kekkyuretasu,daikonn,bareisyo,satoimo,
             kansyo,ninjin,syouga,shishitou,nigauri,burokkuri,soramame,
             kyabetsu,hakusai,hourensou,syungiku,konegi,tamanegi_ikubyou,
             tamanegi]

def yasainame():
    print("施肥量データが選ばれました。野菜を選んでください。")
    for i,v in enumerate(sehidetas):
        print(i,v.name)
def yasai_sentaku():
    print("**********************************************")
    yasainum = input("野菜の番号を入力してください: ")
    try:
        sehidetas[int(yasainum)].yasai_data_load()
        sehidetas[int(yasainum)].m_change()
        print("**********************************************")
        print("*元肥,追肥のデータだけです(堆きゅう肥,苦土石灰,よう燐は土壌状態に合わせ別途用意する必要があります)")
    except IndexError:
        print("選択範囲にない値です.")
        yasai_sentaku()
     




#袋の総量及び成分含有率入力 
def fukuro():
    print("袋の成分量を計算します")
    fukuro_kg = input("袋の総量を入力してください(kg): ")
    fukuro_N = input("窒素含有率を入力してください(N): ")
    fukuro_P = input("リン酸含有率を入力してください(P): ")
    fukuro_K = input("カリ含有率を入力してください(K): ")
    fukuro = Sehi(fukuro_kg,fukuro_N,fukuro_P,fukuro_K)
    fukuro.seibunryou()
 
#メイン処理

syori = input("処理を選んでください: 1: 施肥量計算 2: 施肥量データ: ")


def hatake():
    if syori == str(1):
        fukuro()
        input()

    elif syori == str(2):
        yasainame()
        yasai_sentaku()

     

hatake()
input()



 ソースに書いてあるとおり元肥,追肥のデータだけです(堆きゅう肥,苦土石灰,よう燐は土壌状態に合わせ別途用意する必要があります

あと播種期,定植期も一般的な露地物のものとしていますが(春夏二度のものもあります)
地域差.農業スタイルや気温によってもかわります
あくまで参考程度で...

自分の環境はlinuxです 
ソースをメモ帳にコピペで名前にnpk.pyをつけて
実行権限をつけて同じ階層でpython npk.pyしてやってください

 久しぶりの更新です 備忘録 使っているarchlinuxにnvidiaのドライバを入れたところドライバがあっていなかったのかxが起動せずこれをアンインストールしたがその後xf86-video-nouveauが入っているにもかかわらずxが起動しなくなったのでarchwikiにて調...