AIっておもしろい?

離職者等再就職訓練でAIを勉強するブログです

飛び石連休は物忘れに注意

土曜、日曜と休んで、月曜授業からの、祝日の火曜。
となると、いろんなものを忘れてしまいます。

たとえば、ブログとかね。。。
申し訳ございません。


勉強のほうはできるだけ忘れないように、
時間が許す限りプログラムを書いています。

昨日の授業は、物忘れを考慮してあまり進捗させず、
振り返りや練習問題がメインでした。


今回は、
「どんな問題を解いたか」
を記していきたいと思います。

問題1

for文のみを使って1から10までの偶数を表示しましょう。

解説

学習の目的は、for文とrange関数の仕様理解です。
range関数の仕様である
『range(開始位置, 停止位置, 間隔)』
をうまく使います。

解答
for num in range(2, 11, 2) :
    print(num)

出力結果)
2
4
6
8
10

ポイント

開始位置を'2'とすることで、'2'から表示します
停止位置を'11’としないと、'9'までしかカウントが回らないので注意です
間隔を'2'とすることで、偶数のみ'num’に設定します

問題2

以下の図形を出力してください
図)
*-*-*
-*-*-
*-*-*
-*-*-
*-*-*

解説

学習の目的はfor文のネストです。
行単位に処理をするfor文と
文字単位に処理をするfor文の
二重構造で記載することができます。

解答
v = False
for i in range(5) :
    for j in range(5) :
        if v is False  :
            print("*", end="")
            v = True
        else :
            print("-", end="")
            v = False
    print()
ポイント

1行目:フラグを使って状態を管理します
5、8行目:『end=""』とすることで、print文の末尾にデフォルトで入る改行コードを消します
10行目:print文の末尾にデフォルトで入る改行コードを利用して、行単位で処理をするfor文の最後に改行を入れます。

発展

このコードをもっと短くすると、こんな感じ

v = False
for i in range(5) :
    for j in range(5) :
        print(("-" if v else "*"), end="")
        v = not v
    print()
ポイント

4行目:判定式と判定結果を三項演算子を使用して、1行にしています
5行目:『not』を使用することで、bool型(TrueとFalse)を切り替えています

ちなみに、Javaで書くと、こんなカンジでしょうか。
※実行していないので保証しません

boolean v = False ;

for( int i=0 : i < 5 : i++ ){
    for( int j=0 : j < 5 : j++){
        System.out.print( v ? "-" : "*" ) ;
        v = !v ;
    }
    System.out.println() ;
}

次回予告

ついにリストに入ります。
JavaやCでいう、配列というやつです。
下読みしたカンジ、pythonのリストはJavaのListクラスに近い印象です。
ぐんと複雑になる予感がします。
楽しみだなぁ。