どうやってAIを学習するか?

各学習法を吟味、自分に合った方法で進める。

Chainer チュートリアルへようこそ。

このチュートリアルは、機械学習やディープラーニングの仕組みや使い方を理解したい大学学部生以上の方に向けて書かれたオンライン学習資料です。

機械学習の勉強を進めるために必要な数学の知識から、Python というプログラミング言語を用いたコーディングの基本、機械学習・ディープラーニングの基礎的な理論、画像認識や自然言語処理などに機械学習を応用する方法に至るまで、幅広いトピックを解説しています。

機械学習を学び始めようとすると、ある程度、線形代数や確率統計といった数学の知識から、何らかのプログラミング言語が使えることなどが必要となってきます。 しかし、そういった数学やプログラミングの全てに精通していなければ機械学習について学び始められないかというと、必ずしもそうではありません。

本チュートリアルでは、機械学習やディープラーニングに興味を持った方が、まず必要になる最低限の数学とプログラミングの知識から学び始められるように、資料を充実させています。

そのため、できる限りこのサイト以外の教科書や資料を探さなくても、このサイトだけで機械学習・ディープラーニングに入門できることを目指して、作られています。初学者の方が「何から学び始めればいいのか」と迷うことなく学習を始められることを目指したサイトです。

また、本チュートリアルの特徴として、資料の中に登場するコードが、Google Colaboratory というサービスを利用することでそのままブラウザ上で実行できるようになっているという点があります。

ブラウザだけでコードを書き、実行して、結果を確認することができれば、説明に使われたサンプルコードを実行して結果を確かめるために、手元のコンピュータで環境構築を行う必要がなくなります。

とりあえずkeras

とりあえずkerasの本から始めました。

こいつです。

実装するだけならこんなに簡単なのか!っていうのでモチベ爆上がりしましたね。

この本のおかげで、何に何を入れたら何が出てくるぐらいは理解できました。

つまり、よくわかんないけど作れる。みたいな状態。

この本を(わからないところは飛ばし飛ばし)終えてからtensorflow公式のAIチュートリアルをやってました

あとは微分と積分がなんで重要なのかをちらっと勉強してました。

ただ、東大松尾研究室のDL4USの存在を知ってたそっちを受けてたかも(^^;

動画編

数学は動画で勉強。

TRYの動画授業。

YOUTUBEなので無料だしわかりやすい。

高校生向けになので初心に帰れるのも良い。

微分だけ学びました。

予備校のノリで学ぶシリーズ。

YOUTUBEなので無料。

確率統計、線形代数はここで学んだ。

ボケがおもしろくなくておもしろいので好き。

1.わからないところを理解する。

独学で一番まずいのが、なんかよくわからないからモチベ下がったってやつです。

モチベ下がるのは良くないので、なんでわからないのか、どこがわからないのか、というのを理解して対策を打ちましょう。

ワンもあ言います。「わからない理由を明確化する」、そして「対策を打つ」。

もう一回いいます。「なんで」わからないのか、どこがわからないのか、そして「対策」。

もう一度いいます。「原因」と、「対策」。

わかんなくて叫びだしたくなったら「原因」と「対策」っていうのを思い出してください。

原因を見つけるのは2ステップ。

「どこ」がわからないのか、どこからわからなくなったのかを調べる。

全体像

本講座は全7Lessonの演習マテリアルからなっています。各Lessonは次のような構成になっています。

– Lesson 0: 機械学習・Deep Learningのキソ

  – 機械学習概観

– Lesson 1: 手書き文字認識をしよう

  – Keras入門、MNIST、MLP、前処理、勾配に関するテクニック、過学習に関する手法、Fashion MNIST

– Lesson 2: 畳み込みニューラルネットワーク

  – CNN基礎、Data Augmentation、画像データの正規化、Batch Normalization、Skip Connection

– Lesson 3: 系列データで予測させてみよう

  – RNN、BPTT、Gradient Clipping、LSTM、GRU

– Lesson 4: ニューラル翻訳モデルをつくってみよう

  – 言語モデル、分散表現、Seq2Seq、Keras Functional API、Attention

– Lesson 5: 画像からキャプションを生成してみよう

  – MSCOCO、学習済みモデルの利用、キャプション生成、Attention

– Lesson 6: ニューラルネットに画像を生成させよう

  – 生成モデル入門、GAN、Conditional GAN、VAE

– Lesson 7: ニューラルネットでゲームを攻略するAIをつくろう

  – 強化学習入門、Q学習、DQN、OpenAI Gym、Double DQN、Dueling Network

演習の進め方

各LessonにはそのLessonで学ぶトピックの説明及びPythonでの実装がJupyter Notebook形式でまとめられています。 各Lessonは4つのSectionから構成されている。

(画像はネットより借用、文面もQiitaなどより借用)

↑人気ブログランキングに参加しています。ポチっと1票を!

Python-HTML-CSS with Enlighter in Gutenberg

19/11/26に掲載されたプログラム群をGutenbergとEnlighterを使って再掲します。

#!/usr/bin/python3      # app.py python
# -*- coding: utf-8 -*-
# app.py
 
from flask import Flask, redirect ,request,render_template
 
app = Flask(__name__)
 
@app.route("/check")
def check():
    return render_template('check.html')
 
@app.route('/',methods=['POST'])
def index():
    my_age = int(request.form["age"])
    my_name = request.form["name"]
    return render_template('index.html',age=my_age,name=my_name)
 
if __name__ == '__main__':
    app.run(debug=True)

上のコードはPython programです。

<!DOCTYPE html>      <!-- check.html -->
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>年齢確認</title>
<!--    <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}" />  -->
    <link rel="stylesheet" type="text/css" href="static/css/style.css" />
</head>
<body>
 
    <form action="/" method="post">
        <h1>年齢確認</h1>
        <input type="text" name="name" placeholder="名前" required/>
        <input type="number" name="age" placeholder="年齢" required/>
        <button>年齢確認</button>
    </form>
 
</body>
</html>

上のプログラムはHTMLです。

<!DOCTYPE html>  <!-- index.html -->
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>18禁のサイト</title>
<!--        <link rel="stylesheet" type="text/css" href="style.css" />  -->
    <link rel="stylesheet" type="text/css" href="static/css/style-04.css" />
        <!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
    </head>
    <body>
    <h1>射幸心を煽りまくるホームページ</h1>
    {% if age >= 18 %}
    {{name}}さんは18歳以上ですね。
    {% else %}
    {{name}}さんみたいな方はこんなHP見ちゃいけません?
    {% endif %}
 
    </body>
</html>

上のプログラムもHTMLです。

@charset 'utf-8';
body     {
    background: sandybrown;
    color: darkgreen;
    margin-left: 2m;
    margin-right: 2m;
}

上のコードはstyle.cssです。

@charset 'utf-8';
body     {
    background: violet;
    color: darkgreen;
    margin-left: 2m;
    margin-right: 2m;
}

上のコードはstyle-04.cssです。

文字が小さく見ずらい時はWindows拡大鏡をお使いください。Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)

↑人気ブログランキングに参加しています。ポチっと1票を!

EnlighterでPython codeを表示

アイキャッチ画像は北大旧交流プラザ(エルムの森)です。

Plugin Enlighter Sourcecodeを初めて使う!

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#demo32.py sessin managed & username get
from flask import Flask, redirect, request, render_template, url_for, session
 
app = Flask(__name__)
 
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo07.html')
 
@app.route('/program', methods=['GET', 'POST'])
def program():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo03.html')
 
@app.route('/program1', methods=['GET', 'POST'])
def program1():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo04.html')
 
@app.route('/program2', methods=['GET', 'POST'])
def program2():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo05.html')
 
@app.route('/param/<parameter>')
def show_user_profile(parameter):
    if 'username' in session:
        html = render_template('demo07.html',name = str(parameter))        
        return html
    return 'You are not logged in. from param processing'
 
@app.route('/reset', methods=['GET', 'POST'])
def reset():
    session['username'] = 'monkey'
    return render_template('check31.html')
 
@app.route('/')
def func():
    if 'username' in session:
        html = render_template('demo07.html',name = str(session['username']))        
        return html
    return 'You are not logged in'
 
@app.route('/check', methods=['GET', 'POST'])
def check():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('func'))
    return render_template('check31.html')
 
@app.route('/',methods=['POST'])
def index():
 
    if (request.form['attr'] == 'need'):
 
        success = False
        name = request.form["username"]
        passwd = request.form["pass"]
        att1 = request.form['attr']
        my_message = "keyword処理は?"
    else:
        con1 = request.arg.get('_ControlID')
        pg1 = int(request.arg.get('_PageID'))
        act1 = request.arg.get('_ActionID')
        flg1 = request.arg.get('getFlg')
        html = render_template('demo07.html', con = con1, pg = str(pg1), act = act1, flg = flg1)        
        return html
 
    user_data = [{"id":"カリフラワー", "pass":"hanakyabetsu"},{"id":"西行法師", "pass":"masako"},{"id":"monkey", "pass":"kayochan"},{"id":"program1", "pass":"pass1"}]
 
    for i in range(0, 10):
        if user_data[i]["id"] == name:
            if user_data[i]["pass"] == passwd:
                success = True
                session['username'] = name
                return render_template('demo07.html',suc=success,name=name,pas=passwd,msg=my_message,att=att1)
            else:
                continue
        else:
            continue
    success = False
    return render_template('demo07.html',suc=success,name=name,pas=passwd,msg=my_message,att=att1)
 
@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('func'))
 
app.secret_key = 'B0Qp89i/2xY F~XHH!jnVVLWX/,%QR'
 
if __name__ == '__main__':
    app.run(debug=True)
  • EnlighterでPython codeを表示
    Code画面の右上
  • 左(+)Open Code in new Window
    新しいWindowが開かれ大きな文字で表示
  • 中(表)Toggle RAW Code
    Line番号の表示/非表示がトグルで
  • 右(E)EnlighterJS Syntax Highlighter
    省略
51行目うす肌色で2行分ハイライトしている
51行目うす肌色で2行分ハイライトしている

51行目うす肌色で2行分ハイライトしている。カーソルをそこへもって行くと、自動的に51行目が2行にわたっている旨ハイライトする。

↑人気ブログランキングに参加しています。ポチっと1票を!

固定ページではHighlight表示する

CodeMirror Blocks1.1.1,Gutenberg7.1.0,WP5.3の組み合わせで固定ページであるが色別表示(SyntaxHighlight)をした。

CodeMirror Blocks1.1.1,Gutenberg7.1.0,WP5.3の組み合わせで固定ページであるが色別表示(SyntaxHighlight)をした。GutenbergでもCodeMirror Blocksのバグでもなかった。この間変化したのは、LIQUID BLOCKSをインストールしただけ。固定ページはメニューの「トップページ」のプルダウンメニューの「CodeMirror Blocks実験」をクリックすると見ることができます。

固定ページでSyntaxHighlightしている様子
固定ページでSyntaxHighlightしている様子(ログアウト後・リドロウして後)

「コンピューター」→「ソフトウェア」 → 「言語」 → 「その他の言語」 → 「Python(Object指向)」でメニューをたどるとSyntaxHighlightされているのが分かる。

上のボタンをクリックするとHighlight表示されたページが見られます。

↑人気ブログランキングに参加しています。ポチっと1票を!

再びSyntaxHighlight

固定ページではSyntaxHighlightされた、さて投稿ページではどうなるか?

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#demo32.py sessin managed & username get
from flask import Flask, redirect, request, render_template, url_for, session
 
app = Flask(__name__)
 
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo07.html')
 
@app.route('/program', methods=['GET', 'POST'])
def program():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo03.html')
 
@app.route('/program1', methods=['GET', 'POST'])
def program1():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo04.html')
 
@app.route('/program2', methods=['GET', 'POST'])
def program2():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo05.html')
 
@app.route('/param/<parameter>')
def show_user_profile(parameter):
    if 'username' in session:
        html = render_template('demo07.html',name = str(parameter))        
        return html
    return 'You are not logged in. from param processing'
 
@app.route('/reset', methods=['GET', 'POST'])
def reset():
    session['username'] = 'monkey'
    return render_template('check31.html')
 
@app.route('/')
def func():
    if 'username' in session:
        html = render_template('demo07.html',name = str(session['username']))        
        return html
    return 'You are not logged in'
 
@app.route('/check', methods=['GET', 'POST'])
def check():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('func'))
    return render_template('check31.html')
 
@app.route('/',methods=['POST'])
def index():
 
    if (request.form['attr'] == 'need'):
 
        success = False
        name = request.form["username"]
        passwd = request.form["pass"]
        att1 = request.form['attr']
        my_message = "keyword処理は?"
    else:
        con1 = request.arg.get('_ControlID')
        pg1 = int(request.arg.get('_PageID'))
        act1 = request.arg.get('_ActionID')
        flg1 = request.arg.get('getFlg')
        html = render_template('demo07.html', con = con1, pg = str(pg1), act = act1, flg = flg1)        
        return html
 
    user_data = [{"id":"カリフラワー", "pass":"hanakyabetsu"},{"id":"西行法師", "pass":"masako"},{"id":"monkey", "pass":"kayochan"},{"id":"program1", "pass":"pass1"}]
 
    for i in range(0, 10):
        if user_data[i]["id"] == name:
            if user_data[i]["pass"] == passwd:
                success = True
                session['username'] = name
                return render_template('demo07.html',suc=success,name=name,pas=passwd,msg=my_message,att=att1)
            else:
                continue
        else:
            continue
    success = False
    return render_template('demo07.html',suc=success,name=name,pas=passwd,msg=my_message,att=att1)
 
@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('func'))
 
app.secret_key = 'B0Qp89i/2xY F~XHH!jnVVLWX/,%QR'
 
if __name__ == '__main__':
    app.run(debug=True)

Python program(CodeMirror Blocks in GutenbergではHighlight表示されている)

↑人気ブログランキングに参加しています。ポチっと1票を!

Gutenberg使用2回目

問題が私のオペミスかCodeMirror BlocksまたはGutenbergのバグかアイソレートするためにPythonプログラムをアップすることにする。

CodeMirror Blocks(ver1.0)でキチンと表示されていた(PowerShellのプログラムが)Version Up(ver1.1)したとたんGutenberg内では表示されるのに「更新」ボタンをクリックしてログアウトして「野性の証明」をリドロウしたとたんプログラムの表示がSyntaxHighlightされずにプレーンテキストとして表示されてしまう。問題が私のオペミスかCodeMirror BlocksまたはGutenbergのバグかアイソレートするためにPythonプログラムをアップすることにする。

※ →ログインして編集操作に入った時点ではPython codeはSyntax Highlightしている。「下書き保存」をして、「プレビュー」ボタンして画面を表示させてもまだ正しくHighlight表示しているが「公開する」または「更新」ボタンをクリックして、ログアウトして当ブログを表示すると、code部分はplain text表示になってしまっている。ブラウザを変えてみても現象は同じ。「公開する前にチェックを常に表示する。」にチェックを入れて「公開」をクリックした段階で、そのまま「投稿を表示」をクリックしても正しくハイライト表示される。実際にログアウトするとプレーンテキストになってしまう。

# -*- coding: utf-8 -*-
print("例:明治 42 年")
S = input("和暦:")
 
syear = 0
print(S.split())
items = S.split()
year = int(items[1])
 
if items[0] == "明治":
    syear = 1867 + year
elif str(items[0]) == "大正":
    syear = 1911 + year
elif items[0] == "昭和":
    syear = 1925 + year
elif items[0] == "平成":
    syear = 1988 + year
elif items[0] == "令和":
    syear = 2018 + year
else:
    print(items[0],"Error")
 
print("西暦",str(syear),"年")

編集内(Gutenberg)では上記のように正しく表示される。

ログアウトするとプレーンテキストになってしまう。

# -*- coding: utf-8 -*-
print("例:明治 42 年")
S = input("和暦:")
 
syear = 0
print(S.split())
items = S.split()
year = int(items[1])
 
if items[0] == "明治":
    syear = 1867 + year
elif str(items[0]) == "大正":
    syear = 1911 + year
elif items[0] == "昭和":
    syear = 1925 + year
elif items[0] == "平成":
    syear = 1988 + year
elif items[0] == "令和":
    syear = 2018 + year
else:
    print(items[0],"Error")
 
print("西暦",str(syear),"年")

WP SyntaxHighlighterを使うと正しく表示される。

Gutenberg移行後の最初の編集

今までクラシックエディターのみでWordPressの記事をアップしてきた。それが2022年には使えなくなるという情報である。それなら早くからのGutenbergへの移行が得策ではないかと考えた。

Headerの例(h2)

今までクラシックエディターのみでWordPressの記事をアップしてきた。
それが2022年には使えなくなるという情報である。
それなら早くからの移行が得策ではないかと考えた。
【Gutenberg疑問事項】

  1. ダッシュボードの機能操作性は変わらないのか?大丈夫!
  2. 編集画面上の:(アイコン)からメニューを開き「オプション」を選択

・文書パネル
・パーマリンク
・カテゴリー
・タグ
・アイキャッチ画像
・枠
・ディスカッション

  1. すべてにチェックを入れてよいか?(自動的にすべてON)!
  2. フォーマット(標準・アサイド・画像・・・)の処理は?ブロックで!
  3. カテゴリー→親子関係はあるか?ある!
  4. タグ(操作方法は同じか?)同じ!
  5. アイキャッチ画像(どこに、大きさは?)今までと一緒!
  6. ブログランキングのバナーの取り付け方法は同じか?再利用でOK!
  7. 抜粋は?ある!
  8. 投稿の表示方法(プレヴューか?)そう!
  9. ダッシュボードのメニューのplaceの仕方は同じか?同じ!
  10. WP SyntaxHighlightに代わる「Enlighter Sourcecode」でOK!
  11. カスケードメニューがどうなるか?今までと同じ!
  12. 月別アーカイブの常時表示はできるか?すべて表示!

疑問点はまだまだある!。見切り発車をすべきか?すべき!

 文字のサイズやヘッダーと段落の違いは分かりました。 バナーの貼り付け方も分かりました。
 まだまだ各ブロックの使い方が分かっていません。
 今後は編集方法などをネットで調べて、自由自在に使っていこうと思っています。

Gutenbergで行こうと思っています。

散歩道に咲いた小さな花

#USBログオフ時メッセージプロンプト処理
#メッセージ文
$messagePath="C:\temp\usbmessage.txt"
#ログ出力パス
$usbLOG="C:\temp\test\usblog.txt"
 
#--------------------------------------
#メッセージボックス
#--------------------------------------
function MessageBox([string]$p_value = "")
{
    [Void][Windows.Forms.MessageBox]::Show($p_value,"お知らせ","OK", "Warning")
}
 
 
$crUSB = Get-WmiObject -Class win32_usbhub | ? { $_.name -eq "USB 大容量記憶装置" } | ? { $_.status -eq  "OK" }
 
 
if ($crUSB) {
    write-output "$env:computername,$env:username,$(get-date)" >> $usbLOG
 
    #Windowsフォームのロード
    [Void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms");
 
    MessageBox $([String]::Join("`r`n", (Get-Content $messagePath)))
    
}
#USBログオフ時メッセージプロンプト処理「PowerShell(.ps1)」 CodeMirror Blocks 使用(Gutenberg移行に伴ってWP SyntaxHighlighterは使用中止)
↑人気ブログランキングに参加しています。ポチっと1票を!
#USBログオフ時メッセージプロンプト処理
#メッセージ文
$messagePath="C:\temp\usbmessage.txt"
#ログ出力パス
$usbLOG="C:\temp\test\usblog.txt"
 
#--------------------------------------
#メッセージボックス
#--------------------------------------
function MessageBox([string]$p_value = "")
{
    [Void][Windows.Forms.MessageBox]::Show($p_value,"お知らせ","OK", "Warning")
}
 
 
$crUSB = Get-WmiObject -Class win32_usbhub | ? { $_.name -eq "USB 大容量記憶装置" } | ? { $_.status -eq  "OK" }
 
 
if ($crUSB) {
    write-output "$env:computername,$env:username,$(get-date)" >> $usbLOG
 
    #Windowsフォームのロード
    [Void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms");
 
    MessageBox $([String]::Join("`r`n", (Get-Content $messagePath)))
    
}

WP SyntaxHighliterでPowershellのプログラムを表示させているところ。

Python,HTML,CSSの連携

下記コーディングはQiitaの記事を参考にさせていただきました。
-Python(app.py)

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# app.py

from flask import Flask, redirect ,request,render_template

app = Flask(__name__)

@app.route("/check")
def check():
    return render_template('check.html')

@app.route('/',methods=['POST'])
def index():
    my_age = int(request.form["age"])
    my_name = request.form["name"]
    return render_template('index.html',age=my_age,name=my_name)

if __name__ == '__main__':
    app.run(debug=True)

-HTML(check.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>年齢確認</title>
<!--    <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}" />  -->
    <link rel="stylesheet" type="text/css" href="static/css/style.css" />
</head>
<body>

    <form action="/" method="post">
        <h1>年齢確認</h1>
        <input type="text" name="name" placeholder="名前" required/>
        <input type="number" name="age" placeholder="年齢" required/>
        <button>年齢確認</button>
    </form>

</body>
</html>

-HTML(index.html)

<!DOCTYPE html>  <!-- index.html -->
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>18禁のサイト</title>
<!--        <link rel="stylesheet" type="text/css" href="style.css" />  -->
	<link rel="stylesheet" type="text/css" href="static/css/style-04.css" />
        <!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
    </head>
    <body>
    <h1>射幸心を煽りまくるホームページ</h1>
    {% if age >= 18 %}
    {{name}}さんは18歳以上ですね。
    {% else %}
    {{name}}さんみたいな方はこんなHP見ちゃいけません?
    {% endif %}

    </body>
</html>

-CSS(style.css)

@charset 'utf-8';
body	 {
	background: sandybrown;
	color: darkgreen;
	margin-left: 2m;
	margin-right: 2m;
}

-CSS(style-04.css)

@charset 'utf-8';
body	 {
	background: violet;
	color: darkgreen;
	margin-left: 2m;
	margin-right: 2m;
}

以上

↑人気ブログランキングに参加しています。ポチっと1票を!

四則演算(PyCharm)

四則演算

-PyCharmとChromeで実施

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#demo09.py

from flask import Flask,request

app = Flask(__name__)

@app.route('/')
def index():
    a = int(request.args.get("a"))
    b = int(request.args.get("b"))
    op = request.args.get("op")
    
    if op == "a":
          c = str(a + b)
          return "demo09 Add answer = "+c
    elif op == "s":
          c = str(a - b)
          return "demo09 Subtract answer = "+c
    elif op == "m":
          c = str(a * b)
          return "demo09 Multiply answer = "+c
    elif op == "d":
          c = str(a // b)
          return "demo09 Divide answer = "+c
    elif op == "r":
          c = str(a % b)
          return "demo09 Reminder answer = "+c
    elif op == "p":
          c = str(a ** b)
          return "demo09 Power answer = "+c
    else:
          return "demo09 Illeagal operator"

if __name__ == '__main__':
    app.run(debug=True)
#http://127.0.0.1:5000/?op=p&a=3&b=2

以上

↑人気ブログランキングに参加しています。ポチっと1票を!

元号特定プログラム(Python版)

PowerShell_ISE使って西暦年月日を指定して、その日がどの元号に当たるかを特定するプログラムをPython言語にアレンジしたものである。

元号特定プログラム

前に当ブログで西暦、和暦相互変換のプログラムを載せた。今回はPowerShell_ISE使って西暦年月日を指定して、その日がどの元号に当たるかを特定するプログラムをPython言語にアレンジしたものである。Ad-Conversion 20190502をAd_Conversion(20190502)で関数を呼び出し結果を表示する。
PowerShell_ISEをPython
変数「$・・」を「・・」
「-(ハイフン)」を「_(アンダーバー)」
「Function」を「def」(関数の定義)
「ーlt」を「<」(比較演算子)→全角で代用
「elseif」を「elif」(予約語の相違)
「 + 」を「,」(カンマ)
関数のパラメーター
「数字」を「(数字)」にそれぞれ書き換えの必要がある。

元号特定プログラム

def Ad_Conversion(indate):

    ERA_MEIJI = "明治"
    ERA_TAISHO = "大正"
    ERA_SHOWA = "昭和"
    ERA_HEISEI = "平成"
    ERA_REIWA = "令和"

    DATE_MEIJI = 18680908
    DATE_TAISHO = 19120730
    DATE_SHOWA = 19261225
    DATE_HEISEI = 19890108
    DATE_REIWA = 20190501

    if (indate < DATE_MEIJI):

        print("明治以前の日付には対応していません。")

    elif (indate < DATE_TAISHO):

        print("元号は", ERA_MEIJI, "です。")

    elif (indate < DATE_SHOWA):

        print("元号は", ERA_TAISHO, "です。")

    elif (indate < DATE_HEISEI):

        print("元号は", ERA_SHOWA, "です。")

    elif (indate < DATE_REIWA):

        print("元号は", ERA_HEISEI, "です。")

    else:

        print("元号は", ERA_REIWA, "です。")

Ad_Conversion(19300101)  # ①
Ad_Conversion(18700101)
Ad_Conversion(20190101)
Ad_Conversion(20190502)
Ad_Conversion(20200101)
Ad_Conversion(19510817)

# 下記は同スクリプトを実行した結果です
# 元号は昭和です。 # ①
# 元号は明治です。
# 元号は平成です。
# 元号は令和です。
# 元号は令和です。
# 元号は昭和です。

↑人気ブログランキングに参加しています。ポチっと1票を!