ラベル python の投稿を表示しています。 すべての投稿を表示
ラベル python の投稿を表示しています。 すべての投稿を表示

2023年10月6日金曜日

Django の基本

 日本語化


作成したプロジェクト内の「settings.py」の次の2箇所を変更する

LANGUAGE_CODE = 'ja' 

TIME_ZONE = 'Asia/Tokyo' 


settings.py


# Internationalizatio
# https://docs.djangoproject.com/en/4.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'



アプリ作成後には、アプリ名(自分の場合は、classApp)を登録


# Application definition

INSTALLED_APPS = [
    'classApp',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]


urls.pyを編集

作成したプロジェクトとアプリ ディレクトリの urls.pyを編集する

アプリ ディレクトリは新規作成します。


path('アプリ名/', include)



from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]


モデルを作成後には(models.pyの編集後)以下を実行!

python manage.py makemigrations アプリ名
python manage.py migrate

アプリ名を間違えたか、「settings.py」のINSTALLED_APPSにアプリ名が追加されていない。

アプリ名を間違えると

python manage.py makemigrations clasApp

No installed app with label 'clasApp'.


正常の場合

python manage.py makemigrations classApp

Migrations for 'classApp':

  classApp\migrations\0001_initial.py

    - Create model MemoModel


再度、実行するとファイル変更されていないので…

python manage.py makemigrations classApp

No changes detected in app 'classApp'


以上で準備が完了!



2020年3月21日土曜日

デバッグ注意

関数値の戻り値の型に注意!



以下をみてもらいたい
なぜか、
実際にはバグでFalseでなく0が返却されてと仮定します。

if文で比較時にキャストされてしまい、Falseになるのです。

>>> a
0
>>> bool(a)
False



a=func1()
#a=0
if a== False :print "OK" # OKが出力された


>>> assert isinstance( a, bool )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError




改善策
func1は、数字が返却とは、想定していなかった
==>assertを使用して関数の戻り値をチェックする

a=func1()
#a=0

assert isinstance( a, bool )
if a== False :print "OK" # OKが出力された


*ちょっと一般的に設計したがる戻り値

正常の場合は、整数値を返却する
エラーの場合は、Falseを返却

例題で、こんなものはどうだろうか?
あまり処理内容は意味がないが
(ただし、戻り値0もあり)

def func2(num):

 data  = num * 2 -10
 if data <0:
  return False
else:
 return data


ret = func2( 5 )
if ret == False :
 print("error")
else:
 print("num=", ret)

改善策!
if  isinstance( ret, bool ) and ret == False :
 print("error")
else:
 print("num=", ret)

でも、もっと良い方法がある「is」を使うのである
「is」は同一オブジェクトかを判定する。

if  ret is False :
 print("error")
else:
 print("num=", ret)




個々のオブジェクト(インスタンス)には、idが振られている。
id( 調べたいオブジェクト )で調べられ、同一オブジェクト化を判定できる


結論
・if文で比較の場合、
比較がTrueかFalseしかないと断言できる場合は
if data:~
if not data:~
がわかりやすい!
しかし、assertを入れておくと保険になりますよ!

・if文で比較の場合、
比較がTrueかFalseしかないと断言が心配なら
if data is True等がベストです。

※「==」は、キャストが行われるので…




assertは,
__debug__(組み込み定数)がTrueの時実行、通常はTrue
assertさせないは、
起動時のコマンドラインのオプションで「-O」にする
(同時に__debug__がFalseになる)


結論2
Noneも同様がわかりやすいね(スピードがはやい)
 if data is None: ~

まとめ
if data is True:~
if data is False:~
if data is None:~
if data is not None:~

2020年3月20日金曜日

Python 関数の引数チェック

ここでは、
aasertを使用して関数の引数をチェックしてみます!

プログラムが安定するまでは、コーディングにのこしておくといいものかな?
パイソンの起動パラメータで -Oで、無効にできますしね!


例)
def add(a, b):    
   assert isinstance(a, int) and isinstance(b, int), '引数を int型し!
   c = a + b

add(123, '10')



もちろん、こんなコーディングは、ほとんどないけど
関数からの値を渡す場合などは、このようなケースはあり得ます。


data1= 123
data2= funcA()
add( data1, data2)

なら結構やってしまうエラーかもしれません、
funcAにバグが無いとは誰もわかりません!
これを書いておくとヒューマンエラー的にもいいのかな?!





2019年9月15日日曜日

OpenCV インストール

環境は以下です。

windows10
python2.X


Python+OpenCVでカメラキャプチャ
を参考にカメラの画像を表示したかったが、以下のようになりOpenCvの環境がだめ!


ソース参考
import cv2
def capture_camera(mirror=True, size=None):
    """Capture video from camera"""
    # カメラをキャプチャする
    cap = cv2.VideoCapture(0) # 0はカメラのデバイス番号

    while True:
        # retは画像を取得成功フラグ
        ret, frame = cap.read()

        # 鏡のように映るか否か
        if mirror is True:
            frame = frame[:,::-1]

        # フレームをリサイズ
        # sizeは例えば(800, 600)
        if size is not None and len(size) == 2:
            frame = cv2.resize(frame, size)

        # フレームを表示する
        cv2.imshow('camera capture', frame)

        k = cv2.waitKey(1) # 1msec待つ
        if k == 27: # ESCキーで終了
            break

    # キャプチャを解放する
    cap.release()
    cv2.destroyAllWindows()

$ python
>>> capture_camera()




Microsoft Windows [Version 10.0.17763.379]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\user>python
Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named cv2
>>> ^D
  File "<stdin>", line 1

以下のエラになった
C:\Users\user>python
Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
    


https://opencv.org/releases.htmlよりダウンロードして解凍した。

バージョンは、4.0.1(NGなので)と3.4.5
C:\Users\user\Downloads\opencv\build\python\cv2\python-2.7
のcv2.pydを以下に移動した。

C:\Python27\Lib\site-packages


成功した
Microsoft Windows [Version 10.0.17763.864]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\kobay>python
Python 2.7.16 (v2.7.16:413a49145e, Mar  4 2019, 01:37:19) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>>

2019年7月20日土曜日

パイソン exe化する

パイソンをexe化するのは、簡単にできました。

pyinstallerが必要です、インストールします。

pip install pyinstaller

pyinstaller ファイル名  [--onefile] [--noconsole]

pyinstaller  test.py --onefile

buildとdistというフォルダが作成されるので、distフォルダの作成されたexeファイル
を実行します。







通常は、パイソンプログラムが、自分で作成したファイルを動かしてくれます。

こんな感じです。

・プログラムを書きます。
test.py
for i in range(10):
 print i

・実行です
python test.py

実行すると、数字が表示されます。

exe化すると、pyhtonがいりません。
test.exeがあるだけです。






2019年4月19日金曜日

めげない pythonで動画を表示

HPのアクセスが少ないので、めげてしまう。

でも、めげたときは
・まー何とかなるさと楽天的に
・他の良いことをクローズアップして自信を回復
・最後に、これを機会にを多角的に考える

どうかな~

◆パイソンで、ウインドウズ画面をキャプチャするものを作成しました。
ついでに再生もつくりました。



pythonで動画を表示します。
使い方 
play.py  動画ファイル

※cv2,npを使いますので、インストールしてください
 cv2.waitKey(20)で再生スピードを調整


play.py
#-*- coding:utf-8 -*-
import cv2
import numpy as np
import sys

width  = 1280
height =  720
fname  = sys.argv[1]
#fname  = "capture5.mov"

def main():

    # 動画の読み込み
    cap = cv2.VideoCapture( fname)

    # 動画終了まで繰り返し
    while(cap.isOpened()):

        # フレームを取得
        ret, frame = cap.read()
        if ret != True:
            break

        #frame = cv2.resize(frame, dsize=(width/2, height/2))
        # フレームを表示
        cv2.imshow("Flame", frame)
        cv2.waitKey(20)

        # qキーが押されたら途中終了
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
        
    cap.release()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    main()











pythonでPC上の画面をキャプチャします。
ウインドウズ版になります。
かなり、ソースが汚いですがごめんなさい。

使い方 
capture.py  動画ファイル名( cap.mov等)

※何かキー入力で終了です

※importしているファイルは、インストールされていなければ
してください。



capture.py
# -*- coding: utf-8 -*-

import sys
import win32gui
import win32ui
import win32con
from PIL import Image

import cv2
import numpy as np



SCREEN_WIDTH = 2160
SCREEN_HEIGHT = 1440
SCREEN_SCALING_FACTOR = 1.5

""" スクリーンショット撮ってそれを(Pillow.Imageで)返す """
window = win32gui.GetDesktopWindow()
window_dc = win32ui.CreateDCFromHandle(win32gui.GetWindowDC(window))
compatible_dc = window_dc.CreateCompatibleDC()


width  = 1280
height =  720
sx = 10
sy = 10

# Define the codec and create VideoWriter object
#fourcc = cv2.VideoWriter_fourcc(*'XVID')


#fourcc = cv2.cv.CV_FOURCC(*'XVID')
fourcc = cv2.cv.CV_FOURCC(*"H264")
#out = cv2.VideoWriter('video.avi', fourcc, 20.0, (width, height))
#out = cv2.VideoWriter('output123.mp4',0x00000021,15.0,(1280,360))
#out = cv2.VideoWriter('output.avi',fourcc, 20.0, (width,height))
fname = sys.argv[1]
#fname = "cap6.mov"
out = cv2.VideoWriter( fname, cv2.cv.CV_FOURCC(*'mp4v'),25, (width, height))
#out = cv2.VideoWriter('capture123.mp4', cv2.cv.CV_FOURCC(*'mp4v'),30, (width, height))

bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(window_dc, width, height)
compatible_dc.SelectObject(bmp)


def screenshot():

    compatible_dc.BitBlt((0, 0), (width, height), window_dc, (sx, sy), win32con.SRCCOPY)

    curFlags, curH, (curX, curY) = win32gui.GetCursorInfo()
    compatible_dc.DrawIcon((curX, curY), curH)
    
    img = Image.frombuffer('RGB', (width, height), bmp.GetBitmapBits(True), 'raw', 'BGRX', 0, 1)
    return img





#img.show()

def main():

    while(1):
        #im = ImageGrab.grab((90, 90, 800, 400)) # デスクトップの始点(0,0),横400, 縦300の矩形部分をキャプチャ
        im =screenshot()
        im = np.asarray(im)                     # OpenCVで扱うためにNumpy配列に変換
        im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) # BGR→RGB
        out.write(im)

        im2 = cv2.resize(im, dsize=(width/2, height/2))
        cv2.imshow("desktop", im2)               # 画面表示
        # write the flipped frame

        if cv2.waitKey(1) > 0:                  # キー入力があれば終了
            out.write(im)
            cv2.destroyAllWindows()
            break

if __name__ == "__main__":
    main()



2019年3月23日土曜日

パイソンでバージョンが、ごちゃごちゃに!

パイソンでバージョンが、ごちゃごちゃに!

自分の環境は、ubuntuでDTIのVPSを利用しています。
安くて中々気に入っています。

宣伝する気はありませんがこちらです!
DTIのServersMan@vps
月額350円は遊ぶには持って来いだね!

パイソンデバッガーを公開しているのですが、そこのデバックターゲットの
バージョンが、pyhton3.6なもんで大変だった。


初期時は、ver2.7 とver3.4だったと記憶していたが、

pipでインストールするときには、こんな感じでやっていました!

python3.6 -m pip install インストールしたいもの

何が何だか分からなくなったので、
python3.x  -m pip install --upgrade pip
pipもアップグレード



因みに以下のように、バージョンによってインストールされる場所が違う
python 2.6, 2.7
apt-getでインストール
 /usr/lib/python2.X/dist-packages
easy_installでインストール
 /usr/local/lib/python2.X/dist-packages
ローカルでインストール
 /usr/local/lib/python2.X/site-packages
python 3
apt-getでインストール
 /usr/lib/python3/dist-packages
easy_installでインストール
 /usr/lib/python3/dist-packages
ローカルでインストール
 /usr/local/lib/python3/site-packages



でも、この解決策が一番いいなと思い今は、少し落ち着いたです。
解決策1
python2系は、まだ色々なライブラリーがあり便利そうだがメインにしない
つまりpyhtonと入力するとpyhton3が起動する、2系を使いたい時は
「python2」と明示的にする。

解決策2
これは、ずぼらの自分の所為なのだが
python3を起動すると、最新のバージョンが起動するようにした。


シンボリックリンクなので、こんな感じで変更した。
rm /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python

確認checkです。
root@localhost:~# which python
root@localhost:~# ls -l /usr/bin/python
lrwxrwxrwx 1 root root 16  3月 23 17:02 /usr/bin/python -> /usr/bin/python3

2018年12月15日土曜日

パイソンのデバッガー



音声はないですが、どうでしょうか?

http://simple-and-useful.net/

のサイトで、サックとコーディングしてデバッグです。


2018年10月17日水曜日

パイソンのデバッグ テクニック2


今回は、プログラムのどこを流れたかを確認する関数を作成しました。
プログラムの流れをトレースするのに便利な関数です


print文により、ソースファイル名、関数名、行番号が表示されます。
以下の変数に格納されます。

fileNm  ソースファイル名
funcNm  関数名
lineNo    行番号


表示フォーマットは、自分の好きなようにカスタマイズしてくださいね!
現在は、こんな感じです。

test.py main:15
test.py func:12




🔸トレースに便利な関数

def dbg():

  frame = inspect.currentframe().f_back

  fileNm = os.path.basename(frame.f_code.co_filename)
  funcNm = frame.f_code.co_name
  lineNo = frame.f_lineno

  print( fileNm, "%s:%s" %(funcNm, lineNo) )





🔸ソース全体  ( test.py )
こちらをコピペすれば動作が確認できると思います。


import inspect
import os

def dbg():
  frame = inspect.currentframe().f_back
  fileNm = os.path.basename(frame.f_code.co_filename)
  funcNm = frame.f_code.co_name
  lineNo = frame.f_lineno

  print( fileNm, "%s:%s" %(funcNm, lineNo) )

def func():
  dbg()

def main():
  dbg()
  func()


main()



以下のリンク先のNpdbですぐに確認しよう!
----------------------------------------------------------------------------------
誰でも簡単に使える、 クラウド パイソンデバッカー (IDE/編集可能)
 Npdb

リンク先は、  http://simple-and-useful.net/index-j.html
----------------------------------------------------------------------------------

2018年10月7日日曜日

パイソンのデバッグ テクニック1

ここでは、パイソンのデバッグテクニックとして
デバッグ関数を作成してみた。
以下がその関数である。



def mydbg( s ):

    print( s )

    fileName ="dbg.txt"
    with open( fileName, mode='w') as f:
        f.write(s)
    
    
    
mydbg("abcdefg")








ご存知だと思いますが、上記をモジュールにして
(モジュールにするには、上のソースをmydbg.pyのファイル名にして
カレントフォルダーに保存します)

インポートするには、簡単です
こんな感じでインポートすればOKですね。



#import mydbg
from mydbg import *

mydbg("douda-hyouji")



----------------------------------------------------------------------------------
誰でも簡単に使える、 クラウド パイソンデバッカー (IDE/編集可能)
 Npdb

リンク先は、  http://simple-and-useful.net/index-j.html
----------------------------------------------------------------------------------

2018年9月16日日曜日

python バージョン変換(2から3へ)

昨日は、npdb(デバッカー)のソースのバージョンをUPさせた。

※http://simple-and-useful.net/netpdb/npdb.html



いくつかの注意点をまとめました。

print が関数になっている。

ver2
        print "abc"

ver3
       print("abc")


文字列のバイト配列が、明確に区別された為に、苦労した。

バイト配列にしたい時は、文字列の前に"b"をつければOKだ

                        c = b"STOP-PROCESS"
                        os.write( self.pipeout0, c)


リードしたするとバイト配列で返却されるので、
 デコードして文字列とするのだ。

                        line = os.read( rready[0], 1024)
                        line = line.decode()


逆にバイト配列にしたい場合は、encode()を使用する



                        line = line.decode()



🔸バージョン変換する場合には、環境も整備しなければいけない
 モジュール(numpy)をインストールのときもいろいろあったなー

pipもバージョンがあるらしい
pip3でもよいが、3.4か3.5か3.6かを指定したい場合は、
以下のようにやりました。
さすがに、pip3.4 とか pip3.6とかはないので。。。

  python3.6 -m pip install  numpy


Ubuntu add-apt-repositoryがなかったりしましたが
すべて完了してしまった。



version は、3.6が入った、モジュールもなんとか入った。





----------------------------------------------------------------------------------
誰でも簡単に使える、 クラウド パイソンデバッカー (IDE/編集可能)
 Npdb

----------------------------------------------------------------------------------

2018年7月22日日曜日

python 文字列 (python vs JavaScript)

pyhtonの文字列操作


まとめ(python vs JavaScript


・型変換 似ているね

パイソン
  int(), str() 

JavaScript
 Number(), String()



※以下は順番に パイソン、JavaScript

・変換は同じで、replaceでいきましょ!

・長さは、len()関数、length(プロパティか?)

・空白削除は、strip, trimではなくreplaceがよさげ(trimはブラウザ未対応あり)

・部分文字列は、スライスでいこう。書き方がちがうよ

・文字列検索は、find, indexOf ( Ofの最初は大文字だよ,
               無い場合は、-1をどちらも返却しますよ )


※型判定 type()関数,  typeof 変数名
 長さ取得みたい〜



■長さは、len

>>> a="koba "
>>> a
'koba '
>>>
>>> len(a)
5



■部分文字列はスライスでやるよ

開始インデックス:終了インデックスを指定します

>>> a
'koba '
>>> a[1:3]
'ob'



先頭から2文字
>>> a
'koba ' ※わかりやすくスペースを全角にしました
>>> a[:2]
'ko'

お尻から2文字
>>> a[-2:]
'a ' ※わかりやすくスペースを全角にしました



■検索(find)


>>> a="kobayashi yamada"
>>> a
'kobayashi yamada'

>>> a.find("koba")
0
>>> a.find("y")
4
>>> a.find("yo")
-1
>>> a.find("yamada")
10
>>> a.find("yama")
10

>>> a.find("yamada2")
-1

■置換(replace)

>>> a
'koba '
>>> a.replace("k","K")
'Koba '


■空白削除(タブ文字、改行(\r,\n))
   
>>> a
'koba '


>>> b= a.strip()
>>> b
'koba'



■データ型の判定

>>> intData = 12
>>> strData = "34"

>>> type( intData)
<type 'int'>
>>> type( strData )
<type 'str'>

>>> str( intData )
'12'
>>> int( strData )
34
>>>



最後に文字列結合は
プラス記号で結合できますよ

※パイソン、JavaScriptでは、ダブル、シングルクォートどちらも同じ扱いらしい
(エスケープ処理に違いがない)






JavaScriptもついでに解説


■長さ(プロパティなのか?)

var str = 'hello';
console.log( str.length );

> 5


■部分文字列(slice)
スライスでいくと、パイソンと同じ感じになりますね〜

var value = 'koba';
data = value.slice( 0,2 );
console.log( data );

data = value.slice( -2 );
console.log( data );

data = value.slice( 1,3 );
console.log( data );

> "ko"
> "ba"
> "ob"


■検索 (indexOf)
var value = 'koba yama';
data = value.indexOf("ba ");
console.log( data );

data = value.indexOf("y");
console.log( data );

data = value.indexOf("yama2");
console.log( data );

> 2
> 5
> -1


■置換(replace)

var value = 'koba '; 
data = value.replace("k", "K"); 
console.log( data ); 

> "Koba "

■スペースを取り除く

trimがあるが、ブラウザ未対応があるので、以下を参考に

var value = 'koba';
data = value.replace(/^\s+|\s+$/g,'');   (※正規表現でこのままで利用)
console.log( data );

> "koba"


■型変換
var value = 123
data = String(value);
console.log( typeof data );
console.log( data );

var value = '123';
data = Number(value);
console.log( typeof data );
console.log( data );

> "string"
> "123"

> "number"
> 123


※データ型の判定は、 typeof




おまけのパイソン
■文字列の繰り返し

>>> print "*" * 50
**************************************************
>>> a="koba "
>>> print a*3
koba koba koba 

※デバックで画面表示に使えるかもね

python debugger (pdb vs npdb)

パイソンの標準デバッカー(pdb)とクラウドデバッカー(npdb)

■デバックについて

プログラムを書き実行してみると、うまくいかない事が多い。
1回で動く事は、稀でありそのためにデバック作業が発生するのである。

自分の経験(40年前から)から、全然かわらないが
一つ言える事がある、以前より大変になった事である。

人間社会も同じことだけど、プログラム環境もより複雑になり多くの時間を
簡単なことに費やしています。

では、デバックの基本とは、

①プログラムの流れが正しいかを確認
②変数(データ)が正しく設定されているか
③後、厄介なのは、タイミングである
 以前(大昔)は、必ずプログラムの流れは1つであったが、
 スレッド、プロセス、タイマー、割り込みなど、ある処理が動作している時に
 他の流れを考えながらデバックをしなけらばいけない。

①、②は画面などに表示をしてみる事で、だいたい大丈夫。
③はタイミングなので、ファイルにプログラムの流れをタイムスタンプと一緒に書き込みを
 おこない確認をするしかない。
 へたにデバッカーに頼ると思いもかけない時間を浪費してしまう。


■デバッカーは必要か?

 自分は、NOと言いたいがどんなもんだろうか?
 自分が若い時は、コボルという事務処理言語かなり主流だった

 勿論、デバッカーなど無い大型コンピュータでプログラムをタイピストに依頼して
 マシンタイムに動作させ、結果を確認。
 問題があれば、Display文などを、お粗末なエディターで数行いれて、
 実行待ち、複数人数で使用しているから結果はすぐにはでない。

 そしてその日の割り当てられたマシンタイムは終わり、結果印刷物を会社に持って帰り
 再検討、机上デバックする。

 こんな感じであった、勿論再検討する際にはデバックをおこなう、机上で変数名に現在何が
 入っているか?もしこちらに処理が移ってしまっていたらどうなるのか?

 かなり机上で確認しているから、実際のマシンタイムではうまく動いていくのである。

 3回ぐらいマシンで正常動作させて、次にはテストフェーズにはいる。
 テストケースを机上で考えて、前述のように周到な準備をおこない。
 テストをおこなう。

 今思うとなつかしい。
 

■pdb





変数名
変数名=

順番に、

step, next, return, continue, break
であるなんとなく想像できる単語である

stepは単語の意味どうり
1行ごとだけど、日が暮れちゃうね

nextはstepよりちょっと早くできる、関数、メソッドを通過する
関数値等を確認は、nextを実行後代入された内容をみてみる
(いまさらですが、現在の実行を示す位置は、実行前ですよ)

returnは、stepで関数内部に入り、途中で関数から出たくなった場合に使う。
pdbでは、関数をリターンする前に止まるので、ここでも関数値を確認できる

「関数値の確認方法」

continue文
cでオーケーだが、contでもいい。
時にはcontと打ってデバックをしたいと思うが、自分の性格上だめである

cont,continue(スペル間違いが無ければいいが)を打つ余裕が、時短で良いデバックができるのも
真実であるように思える。

自分は煙草を吸わないが、家事や身の回り、机まわり等を掃除、整頓するのも良いのではないかな。

また、難問にぶつかってしまったら、散歩、買い物をするのも良いのでは。。
(自分は、買い物でアルコールを買うので、そこまでのデバックなってしまうので。。。どうか)

おすすめは、最初に「contする」です
パイソンの場合は、コンパイルしないでの実行時にエラーが発生するからです。

もしかすると、最初で天国に行くことができて、弾みがでて細かなデバックができることも
多々あるからです。

うまくいかない場合は、適当なところにbreak文でストップしてみましょう。

以外とその途中まで行っていないケースは自分の場合多かったです。

最初にimport
次にファイルの入力
関数をコールしてなかった、条件がかなり違っているなど。

様々ですが、本当はプルグラムを印刷して机上デバックすればかなり早いのですが。。。

時代ですね。。。

今日は、ここまで終わりです。

歯科に行く予定なので、一時的な公開をしますよ




以下は、未完ですよ
(上もこれからだけど)



これだけをマスターすれば、快適なデバックが行える。


しかし、もっと単純化すれば以下の3単語(コマンド)だけでよいのかもしれません。
tbreak
cont
p 変数名

tbreakとは、一時的なブレークポイントである

書き方は、tbreak ファイル名:行番号でファイル名を省略することもできます

次に、「cont」コマンドでブレークポイントまで処理を実行

実行後に変数の内容を確認する

※p 変数名で変数の内容が表示されるが、変数名がデバッカーのコマンド
重複しない場合は、pは省略可能であります。





最初に、対象のスクリプを表示してみましょう。


次に対象の関数内で処理を止めてみる
(いわゆるブレークポイントの設定である)

そこ箇所の変数名を表示してみる

関数の値を確認する



次回は、例題をあげてデバックしてみたいですね


例題1

1〜10までを加算するプログラム


例題2

文字列を扱う






デバック、デバッカーとは

プログラムは、命令文である
命令文には、決まり事があり人には間違いがある

そのためにデバックが必要なのだ。




2018年7月19日木曜日

python debugger (npdb drag and drop)


Try debugging (dragging existing source)


I will show you how to debug easily.

     
a source program on the net and a program created by oneself
  
Just drag the source you want to debug to the editor panel.

    


Npdb


Click the icon (new)



Enter file name


Open sample program on the net
draug and drop




If you do not enter file name, you get error.

2018年7月18日水曜日

python IDE ( Npdb)

Npdb (python IDE&cloud)

URL
Npd

read and write files from local PC

            

To read the file from the local PC, click the icon (open)
A file selection window will be displayed, so select the file.






To download the file to the local PC, click the icon (save).
 


          
 


Npdb(パイソンIDE&クラウド)

ローカルPCのファイルのリードとライト
            
ローカルPCからファイルをリードするには、アイコン(open)をクリックします
ファイル選択のウインドウが表示されますので、ファイルを選択してください。




ファイルをローカルPCにダウンロードするに、アイコン(save)をクリックします。

          
 

2018年7月16日月曜日

python IDE (Edit,Debug)


Npdb

In the cloud, Python's debugging and editing is possible.

The URL is here
http://simple-and-useful.net/netpdb/npdb.html


When the screen is displayed, hello.py source code is displayed
It is debug start by icon (debug-start).



It is now in edit mode



When you click the debug icon, the color changed green and
change to debug mode





Click the icon (next) to go to the next step,

When the debug line reaches the last line, it restarts and returns to the first line.




NpdbWhen you click the debug icon (debug-end)

debug finished and editing becomes possible



パイソンIDE (Edit,Debug)


Npdb

クラウドで、パイソンのデバッグと編集ができるのだ。

URLはこちらだ
http://simple-and-useful.net/netpdb/npdb.html


画面が表示されると、hello.pyのソースコードが表示される
アイコン(debug-start)でデバック開始である。



現在は編集モードですよ



デバックアイコンをクリックすると、色がグリーンになり
デバックモードになる





アイコン(next)をクリックすると次のステップにいきます、

プログラムが最後の行になると、リスタートして最初の行に戻ります。




デバックアイコン(debug-end)をクリックすると

デバックが終了して、編集が可能になります