Skip to content

Google Colaboratory+Nimで基本文法(リスト, for文m, If文)について勉強します.

Google Colaboratory(以下Google Colab)は、Google社が無料で提供している機械学習の教育や研究用の開発環境です。開発環境はJupyter Notebookに似たインターフェースを持ち、Pythonの主要なライブラリがプリインストールされています。
引用元:Google Colabの使い方

nim4colabのインストール

Google Colab で nimコマンドを使用するためのライブラリであるnim4colabをインストールします.

%load_ext nim4colab により%を付けてNimのコマンドを使えます.

python
!pip install git+https://github.com/demotomohiro/nim4colab.git
%load_ext nim4colab

nimpyのインストール

PythonからNimを呼び出すためのNimのライブラリ、nimpyをインストールします.

Nim初心者が始めるNimとnimpy

nimpyをインストールすることで、後述の fib.nim内で使っているnimpyをコンパイル、ライブラリとして使用することができます.

nimbleはNimのライブラリをインストールするためのコマンドです.

python
%nimble install nimpy -y

Nimの基本文法

ここでは、「空ファイルの作成」に必要なNimの基本構文を記載します。

リスト型

リスト型は、Pythonでは頻繁に使用され、かなり大事な型になりますので,Nimでも練習します。

変数は1つ数値・文字列しか格納できませんが、リスト型は複数の数値・文字列を格納できます。

Pythonでは、複数のデータを管理したい場合に使います。 listは 配列名 = ["a","b","c"] という形式で使用できます。

ただし、リストの中身は左から数え始め、最初は1ではなく、0から数えます。

このリストの順番のことをインデックスと呼びます。

text_list[0]など、リストのインデックスを指定することで、リスト内の数値・文字列を出力できます。

python

python
text_list =  ["a", "b", "c", "d", "e", "f"] 
print(text_list)
print(text_list[0])
print(text_list[5])

# 実行結果
# ['a', 'b', 'c', 'd', 'e', 'f']
# a
# f

nim

python
# Google Colabでnimを使用するためのおまじない
%%nimc
import sugar

var ary = @["a", "b", "c", "d", "e", "f"] 
echo ary, ary.len
echo ary[0]
echo ary[5]
echo ary[ary.len-1]

var results = @[ary[0], ary[2]]
echo results

# 実行結果
# @["a", "b", "c", "d", "e", "f"]6
# a
# f
# f
# @["a", "c"]

for

for文は、リストに格納されている数値・文字列を順番に処理していくことです。

下記のコードでは、「text_list」を左から、「text」という変数にいれて、print(text)で出力するという繰り返し作業をしてます。

for文は、さまざまな書き方があるので、コードを書く時や他人のコード見た時に逐次検索していくことをお勧めします。

全て、把握しようとしたら、キリがないです。

python

python
text_list =  ["a", "b", "c", "d", "e", "f"] 

for text in text_list:
    print(text)

# 実行結果
# a
# b
# c
# d
# e
# f

nim

python
# Google Colabでnimを使用するためのおまじない
%%nimc
import sugar

# for x in 0..6:
#     echo x

var ary = @["a", "b", "c", "d", "e", "f"] 
echo ary, ary.len



for x in 0..6:
    echo x

# text_list =  ["a", "b", "c", "d", "e", "f"] 

# for i in range(6):
#     print(text_list[i])

# 実行結果
# 42
# 63
# 21
# 84
# 2.0
# 42 + 21

nim(関数定義)

python
# Google Colabでnimを使用するためのおまじない
%%nimc
# 返り値:result
proc integer00() =
    echo 42     
    echo 42 + 21 # 足し算
    echo 42 - 21 # 引き算
    echo 42 * 2 # かけ算
    echo 42 / 21 # 割り算
    echo "42 + 21" # 文字列

integer00()
# 実行結果
# 42
# 63
# 21
# 84
# 2.0
# 42 + 21

閑話休題:fou文(range)

本記事のサンプルコードでは使いませんが、for文ではrange()関数を用いることで、特定の回数分の繰り返し作業することもあります。

Python

python
# range(6): 0から5までの連番のリストを返す
# range(2,6): 2から5までの連番のリストを返す

text_list =  ["a", "b", "c", "d", "e", "f"] 

for i in range(6):
    print(text_list[i])

# 実行結果
# a
# b
# c
# d
# e
# f

Nim

python
%%nimc
var a = 0
var b = 0
for i in 0..3:
    a += 1 
    echo a
    b += 2
    echo b

# 実行結果
# 1
# 2
# 2
# 4
# 3
# 6

閑話休題:fou文(逐次計算)

また、for文では、特定の数値を繰り返しで足し算したい場合は,下記のような特殊な書き方をします。

Python

python
a = 0
b = 0
for i in range(3):
    a += 1 
    print(a)
    b += 2
    print(b)

# 実行結果
# 1
# 2
# 2
# 4
# 3
# 6

Nim

python
%%nimc
var a = 0
var b = 0
for i in 0..3:
    a += 1 
    echo a
    b += 2
    echo b

# 実行結果
# 1
# 2
# 2
# 4
# 3
# 6

if文

Pythonでは、ある条件に当てはまるかどうかによって、違う処理をしたい場合がありますので,Nimでも練習します。

その時は、if文を用いることで、条件によって処理を分岐させることができます。

「if 条件文」という書き方が基本で、条件文がTrueになれば、実行されます。

下記では、「iが5以下か否か」で処理を分岐させています。

また、否定文でif文を作りたい場合は、「if not 条件文」とします。

一応、条件文の動きも出力します。

python

python
for i in range(10):
    # 5以下
    if i <= 5:
        print(i <= 5)
        print("5以下:", i)

for i in range(10):
    # 5以下
    if not i <= 5:
        print(i <= 5)
        print("5以上:", i)

# 実行結果
# True
# 5以下: 0
# True
# 5以下: 1
# True
# 5以下: 2
# True
# 5以下: 3
# True
# 5以下: 4
# True
# 5以下: 5
# False
# 5以上: 6
# False
# 5以上: 7
# False
# 5以上: 8
# False
# 5以上: 9

また、複数の条件分岐を記載する場合は、「elif」と「else」を使います。

「elif」は前述のif条件以外の条件を作成できます。

「elif」は前述のif条件・elif条件に当てはまらない時の処理を実行します。

下記では、「iが5未満の時」・「iが5以上・8以下」・「それ以外」で処理を分岐させています。

python
for i in range(10):
    # 5以下
    if i <  5:
        print("5未満:", i)
    elif i <= 8: 
        print("8以下:", i)
    else:
        print("それ以外:", i)
        
# 実行結果
# 5未満: 0
# 5未満: 1
# 5未満: 2
# 5未満: 3
# 5未満: 4
# 8以下: 5
# 8以下: 6
# 8以下: 7
# 8以下: 8
# それ以外: 9

nim

python

nim(関数定義)

python
# Google Colabでnimを使用するためのおまじない
%%nimc
import sugar

for i in 0..10:
    if i <= 5:
        echo "5以下:", i

for i in 0..10:
    if not i <= 5:
        echo "5以上:", i

# 実行結果
# True
# 5以下: 0
# True
# 5以下: 1
# True
# 5以下: 2
# True
# 5以下: 3
# True
# 5以下: 4
# True
# 5以下: 5
# False
# 5以上: 6
# False
# 5以上: 7
# False
# 5以上: 8
# False
# 5以上: 9
python
# Google Colabでnimを使用するためのおまじない
%%nimc
for i in 0..10:
    # 5以下
    if i <  5:
        echo "5未満:", i
    elif i <= 8: 
        echo "8以下:", i
    else:
        echo "それ以外:", i

まとめ

Google Colaboratory+Nimで基本文法(リスト, for文m, If文)について勉強しました.

参考サイト

Nimの特徴や使い方をわかりやすく解説!

Nim初心者が始めるNimとnimpy

Speeding up Python code with Nim

Nimを組み込んでPythonを高速化してみた

至高の言語、Nimを始めるエンジニアへ

Nim Compiler User Guide

スレッドローカルストレージ

Nim 関数

PythonistaのためのNim入門

nim内包表記

Nimの便利な標準ライブラリ sugar

Nim初心者が始めるNimとnimpy

Nimでゼロ埋め

Nim 変数、定数の宣言方法(var, let, const)

Nimを知ってほしい2022

nim いろいろなコメントの方法

【Nim】個人的逆引きリファレンス