えくすとらんのブログ

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してやってください

brotherprinterがarchlinuxで使えなくなったが使えるようになった話

ハードディスクを換装しあたらしいarch環境でブラザー製の複合機の

プリンター機能を使いたくセッティングした

詳しくはこちらを参考にさせてもらった

いざプリントしてみるとcupsも正常に起動しネットワークプリンターもcupsから見えている状態
接続にAppSocket/HP JetDirect
socket://192.168.○.○:9100 を設定
テストページを印刷してみるとジョブも正常終了するがプリンターが動かない

こちらで書いておられるようにlib32-glibc(multilibをpacman.confにて設定必要)

をインストールしcupsを再起動

sudo systemctl restart org.cups.cupsd.service

もう一度設定し直してみると今度は無事にテストページを印刷した



一応...備忘録





パソコンの挙動がおかしかったのでマザーボードの電池交換

ポンコツなのはパソコンか自分か?

ダントツにコスパの良い旧型中古自作PCをくみあげた

ちなみに今使っているのは当時1300円のLGA775マザーボードに

core2quadをとりつけたもの

最近 なぜかパソコンの挙動がいたるところでおかしかった

症状はタスク処理中に固まってしまったり異常に起動がおそくなったり

アクセスランプが点きっぱなしになったりとか....

疑ったのはソフト、メモリ、ハードディスク、マザーボードなどだ

作業途中にハードディスクが回りっぱなしになったりしていたのでハードディスクも

うたがっていたのだが他のパソコンに換装してみるとうまくうごいているようだ

メモリ関係でトラブルがでることもある

デュアルチャンネルで動かす場合などメモリ同士の相性などで誤作動する場合が

あるし挿し方が悪いとこれも原因となったことがある

ということで一応一本挿しにしてみたり違うものを使ってみたりしたのだがやはり

おかしい

着眼したのはbiosの立ち上がりが悪くなっていたことで

biosがメモリを読み込んだあとにデバイス周りのよみこみがおそかった

これはもうマザーボード交換時期なのかとおもっていたのだが

とりあえず最後の望みとしてcmosクリアと電池交換してみたところ

いまのところ非常に快適にうごいている

マザーボードも中古品を使うので次から組み上げる際に電池交換をまめに

しておこうとひそかにおもったのであった....



もしかして....

ゲームなどでテキストを表示させるのにタイピング風に一つづつ

文字をアウトプットさせたいな、なんて考えていたのだけど

文字を出力することだけにとらわれてた

もしかしたら 全文いれておいてから最初の文字以後”空白"をreplace

次は最初と二番目の文字以後空白をreplaceなんて順番にやっていれば

できるのかな

やっぱり出力で考えたほうがいいのかな

どちらにせよ キャンバスつくるなら 文字サイズとの兼ね合いがありそうなんで

むずかしいな








lxdeの仮想デスクトップの数を増やす(自分用備忘録)

備忘禄

環境はarchlinux

デフォルトの枚数が2枚になったのかな?

/home/usrname/.config/openbox/xde-rc.xml

<desktops>
  <number>3</number>(数字変える)
  <name>desktop 3</name>(名前を追加)
</desktops>

保存 logout→login

でいいとおもう



よくわからないもの




import time as tm
import hashlib
a = 1
b = []
while a <= 10:
    tm.sleep(1)
    b.append([a])
    c = str(b)
    hash=hashlib.sha256(c.encode('utf8')).hexdigest()
    a+=1
    print(b)
    print(hash,b[-1],len(b))


フィーリングだけで作ってみた
(理解ができなかったので...)

1〜10までの数字をカウント
ループが回るたびに1ずつ増える変数aをbに追加
そのつどbをハッシュ化
ハッシュされたデータと現在の最後のカウント数、データの長さを出力





おや いつのまにやらなおってた

管理者権限でpcmanfmを開くと

ログアウトがまともにできなる現象がいつの間にやら直ってた

.....なにかしたのかなぁ

それともアップデートでなおったのかな

wheelグループの設定変えたような 変えなかったような
ほかにもなにかしたかなぁ...覚えてないや
まぁ直ったからよしとしよう

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