Vyper

【Vyper】第2章第2回:ループ処理:for文とrange関数の活用

本記事では、Vyperにおけるループ処理(for文)とrange関数の使い方について詳しく解説します。ループ処理を理解することで、スマートコントラクトのデータ操作を効率的に行えるようになります。

0. 記事の概要

この記事を読むメリット

  • Vyperのfor文の基本構文を理解できる
  • range関数の使い方を学び、反復処理を適切に実装できる
  • 効率的なデータ操作の方法を習得できる

1. for文の基本

1.1 for文の基本構文


        @public
        def sum_values() -> int128:
            total: int128 = 0
            for i in range(1, 6):
                total += i
            return total
        

動作解説

  • total: int128 = 0 初期値を0に設定
  • for i in range(1, 6): 1から5までループ処理
  • total += i ループごとにtotalにiの値を加算
  • return total 計算結果を返す

1.2 range関数の活用


        @public
        def even_numbers() -> int128[5]:
            evens: int128[5] = [0, 0, 0, 0, 0]
            index: int128 = 0
            for i in range(2, 12, 2):
                evens[index] = i
                index += 1
            return evens
        

動作解説

  • range(2, 12, 2) 2から10まで2ずつ増加
  • evens[index] = i 配列に値を格納
  • index += 1 インデックスを更新
  • return evens 配列を返す

2. ネストしたfor文

2.1 二重ループの活用


        @public
        def multiply_matrix(a: int128[3], b: int128[3]) -> int128[3][3]:
            result: int128[3][3] = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
            for i in range(3):
                for j in range(3):
                    result[i][j] = a[i] * b[j]
            return result
        

動作解説

  • for i in range(3): 行のループ
  • for j in range(3): 列のループ
  • result[i][j] = a[i] * b[j] 各要素の積を計算
  • return result 計算結果を返す

3. 練習問題

3.1 練習問題

以下の課題に挑戦してください。

  • 1から100までの合計を計算する関数を作成する
  • 奇数のみを格納する配列を作成する

4. まとめ

本記事では、Vyperにおけるfor文の基本的な使い方と応用について学びました。ループ処理を活用し、効率的なデータ操作を実現しましょう。