paiza レベルアップ問題集 「STEP: 3 数字の受け取り 1」 をPythonとGASの両方で解いてみた

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

数字の受け取り 1 (paizaランク D 相当)

この問題では、標準入力で任意の数列が与えられ、それを改行区切りで出力します。
入力例1: 1 2 3 4 5 6 7 8 9 10

出力例1:
1
2
3
4
5
6
7
8
9
10

ではまず、Pythonで解いてみます。

<<Pythonでの解き方>>

手順として、
1.array=list(map(int,input().rstrip().split(‘ ‘)))で配列として標準入力を読み込み
2.for文でrange(0,len(array))を設定
3.print文で出力

コードを見てみましょう。

手順1で配列として標準入力で、読み込むのにlist、複数の値を読み込むのにmapとその引数int。改行の影響を受けないようにrsprit、スペース区切りで読み込むのにsplit(‘ ‘)を使っています。
配列array=[1,2,3,4,5,6,7,8,9,10]と取り込まれ、その添字はarray[0]=1,array[1]=2,array[2]=3,array[3]=4,array[4]=5,array[5]=6,array[6]=7,array[7]=8,array[8]=9,array[9]=10です。

手順2で、まずlen(array)は、配列arrayの長さ(この場合は10)を求めています。
ループを使って範囲を(0,len(array))で、指定したlen(array)=長さ10未満を出力します。
つまり、配列の添字0,1,2,3,4,5,6,7,8,9の10を表示します。
array[i]をループで回してそこに0から9までを入れて、array[0]からarray[9]を出力します。

Pythonでの全コードはこちらになります。

array=list(map(int,input().rstrip().split(' ')))
for i in range(len(array)):
    print(array[i])

<<GASでの解き方>>

では、同じ問題をGASで解いてみます。

まず、スプレッドシートにこの様に配置しました。

灰色のセル1〜10を配列の数値とします。
これを黄色いセルに出力します。

※スプレッドシートに表示する場合は、ループを使って一次元配列ではなく、二次元配列としてからの配列に追加をして作成します※

手順はこのようになります。
1:配列arrayを定義する
2:スプレッドシートからアクティブシートをアクセスする
3:変数cellに、灰色の所の数値をセルB1からK1まで読み込む
4:変数cellに値が格納されたことをログで確認します。
5:ループを0から10未満までを回して、「array.push[i]」で付け加えて、二次元配列にする。
(array.push(i)だと1次元配列になり、二次元配列ではないと、二次元配列のスプレッドシートには読み込めないため。)
6:ログに表示
7:スプレッドシートに表示する。セルB3からarray.length[0]行分なので、getRange(3,2,array.length[0])でセルB3からarrray.length[0]行分を確保してそこに配列を流し込むイメージ

手順1では、後にスプレッドシートの黄色い所に出力するのに使う配列arrayを定義します。

let array=[];

手順2では、アクティブなスプレッドシートにアクセスします。

ss=SpreadsheetApp.getActiveSheet();

手順3では、灰色の所を変数cellに代入します。

cell=ss.getRange(1,2,1,10).getValues();

手順4では、変数cellにスプレッドシートから無事に値が格納されたことを確認します。

console.log(cell);

手順5では、配列cellの0行目の添字0から10未満までループを回して、空の配列arrayに二次元配列として値を格納します。

for(let i=0;i<10;i++){
    array.push([cell[0][i]]);
  }

array.push([cell[0][i]])

と、なっているのは、スプレッドシートでは二次元配列として格納されるので、1行目の1列から最後の列まで格納して行っています。

手順6では、arrayが二次元配列として値が格納されたことをログで確認しています。

手順7では、arrayをスプレッドシートの黄色い部分に格納しています。

実行結果です。

GASでの全コードはこちらになります。

function loop3(){
  
  //スプレッドシートの黄色い所に格納するのに使う空の配列を定義します。
  let array=[];

  //アクティブなシートにアクセスします。
  ss=SpreadsheetApp.getActiveSheet();

  //スプレッドシートの灰色の所の数値を変数cellに格納します。
  cell=ss.getRange(1,2,1,10).getValues();
  
  //格納出来たことをログで確認します。
  console.log(cell);

  //ループで配列の添字0から10未満までループを回して空の配列に格納します。
  for(let i=0;i<10;i++){
    array.push([cell[0][i]]);
  }

  //スプレッドシート格納に使うarrayに格納されたことをログで格納する
  console.log(array);

  //スプレッドシートの黄色い部分に格納
  ss.getRange(3,2,cell[0].length).setValues(array);

}

宜しかったらコピペしてアレンジして見て下さい。

お疲れ様でした。

ブレイクタイムフォトはこちらになります。

都庁前の噴水です。

■ 参考文献の紹介 ■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

←前の問題へ                         次の問題へ→

投稿者: nekosiestr

プログラミング学習中のロスジェネ(就職氷河期世代)の発達障害者です。 宜しくお願いします。 趣味で写真を撮っています。 プログラミングは、GAS/HTML/CSS/JavaScript/jQuery/PHP、 発達障害は、自閉症スペクトラムASD/ADHD、その他双極性障害やHSP(5人に1人の繊細さん)などの生きづらさを抱えておりますが、それでも楽しく生きて行きたいです!! 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。