この記事を読むことで、PythonでのForループの基本的な書き方と対応づけて、内包表記で会得することが可能になります。
また、二乗、三乗などの累乗の計算方法を学べます。
このコーナーでは、学習コンテンツpaizaラーニングのレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。
GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。
paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験
paizaでの解答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。
問題:整数 N が与えられます。
2 の 1 乗から 2 の N 乗までを改行区切りで出力してください。
この記事では、入力例3でNに10が与えられたという条件で解いて行きます。
入力例3
10
出力例3
2
4
8
16
32
64
128
256
512
1024
ではまず、Pythonで解いてみます。
今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。
<<Pythonでの解き方>>
下準備として、paiza.ioにこの様に入力します。
手順として、
1:標準入力でNを取得
2:for文で1からN+1までのループを設定する
3:2**Nで2のN乗を計算して出力
基本のループのコード
#標準入力でNを取得
N=int(input())
#ループでarrayに2のN乗を追加する
for i in range(1,N+1):
print(2**i)
これを内包表記でたった1行で書くとこの様になります。
#標準入力でNを取得
N=int(input())
#【内包表記】ループでarrayに2のN乗を追加する
[print(2**i) for i in range(1,N+1)]
公式のようにまとめると、使った内包表記は、
[計算結果と出力 いつものfor文]
になります。
<<GASでの解き方>>
では、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。
スプレッドシートの黄色い所に2の累乗を出力します。
※スプレッドシートに表示する場合は、ループを使って一次元配列ではなく、二次元配列としてからの配列に追加をして作成します※
手順はこのようになります。
1:スプレッドシートからアクティブシートをアクセスする
2:緑色のセル(B1)にあるN乗のNを取得(この例の場合N=10)
3:累乗の結果を格納する配列arrayを宣言する
4:ループでarrayに累乗の計算結果を二次元配列になるように格納する
5:ログでarrayに累乗の計算結果を格納できたことを確認する
6:スプレッドシートの黄色いセルに配列arrayに格納された累乗の計算結果を出力する
手順1: スプレッドシートからアクティブシートをアクセスする
const ss=SpreadsheetApp.getActiveSheet();
これで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。
手順2:緑色のセル(B1)にあるN乗のNを取得(この例の場合N=10)
const N=ss.getRange(1,2).getValue();
手順3:累乗の結果を格納する配列arrayを宣言する
let array=[];
手順4:ループでarrayに累乗の計算結果を二次元配列になるように格納する
for(let i=1;i<=N;i++){
array.push([2**i]);
}
手順5:ログでarrayに累乗の計算結果を格納できたことを確認する
console.log(array);
手順6:スプレッドシートの黄色いセルに配列arrayに格納された累乗の計算結果を出力する
ss.getRange(3,2,N).setValues(array);
スプレッドシートの実行結果です。
GASでの全コードはこちらになります。
<全コード>
function loop15(){
//スプレッドシートからアクティブシートをアクセスする
const ss=SpreadsheetApp.getActiveSheet();
//緑色のセル(B1)にあるN乗のNを取得(この例の場合N=10)
let N=ss.getRange(1,2).getValue();
//累乗の結果を格納する配列arrayを宣言する
let array=[];
//ループでarrayに累乗の計算結果を二次元配列になるように格納する
for(let i=1;i<=N;i++){
array.push([2**i]);
}
//ログでarrayに累乗の計算結果を格納できたことを確認する
console.log(array);
//スプレッドシートの黄色いセルに九九のNの段が入った二次元配列を出力する
ss.getRange(3,2,N).setValues(array);
}
宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした。
ブレイクタイムフォトはこちらになります。
2017年、六本木ヒルズのハロウィン
■ 参考文献の紹介■
じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。
GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。
paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験