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のコマンドを使えます.
!pip install git+https://github.com/demotomohiro/nim4colab.git
%load_ext nim4colab
nimpyのインストール
PythonからNimを呼び出すためのNimのライブラリ、nimpyをインストールします.
nimpyをインストールすることで、後述の fib.nim内で使っているnimpyをコンパイル、ライブラリとして使用することができます.
nimbleはNimのライブラリをインストールするためのコマンドです.
%nimble install nimpy -y
Nimの基本文法
ここでは、「空ファイルの作成」に必要なNimの基本構文を記載します。
リスト型
リスト型は、Pythonでは頻繁に使用され、かなり大事な型になりますので,Nimでも練習します。
変数は1つ数値・文字列しか格納できませんが、リスト型は複数の数値・文字列を格納できます。
Pythonでは、複数のデータを管理したい場合に使います。 listは 配列名 = ["a","b","c"] という形式で使用できます。
ただし、リストの中身は左から数え始め、最初は1ではなく、0から数えます。
このリストの順番のことをインデックスと呼びます。
text_list[0]など、リストのインデックスを指定することで、リスト内の数値・文字列を出力できます。
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
# 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
text_list = ["a", "b", "c", "d", "e", "f"]
for text in text_list:
print(text)
# 実行結果
# a
# b
# c
# d
# e
# f
nim
# 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(関数定義)
# 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
# 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
%%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
a = 0
b = 0
for i in range(3):
a += 1
print(a)
b += 2
print(b)
# 実行結果
# 1
# 2
# 2
# 4
# 3
# 6
Nim
%%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
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以下」・「それ以外」で処理を分岐させています。
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
nim(関数定義)
# 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
# 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文)について勉強しました.
参考サイト
Speeding up Python code with Nim