paiza レベルアップ問題集 標準入力その4「STEP: 3 5 行の整数の入力」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、Pythonで標準入力を使って、ループを用いて5つの整数を取得する方法が学べます。

GASではスプレッドシートで値を取得して出力しています。

このコーナーでは、プログラミング学習コンテンツpaizaラーニングレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、ご安心なさって下さい。)



5 行の整数の入力 (paizaランク D 相当)

問題:整数 a_1, a_2, a_3, a_4, a_5 が 5 行で与えられるので a_1, a_2, a_3, a_4, a_5 を 5 行で出力してください。

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


手順として、

1:ループを使って標準入力で整数を取得し出力する

の1ステップで行います。

今回は下記の入出力の「例2」を用います。

入力例2
1111
3333
5555
7777
9999

出力例2
1111
3333
5555
7777
9999

まず、準備として、paiza.ioにこのように入力します。
(入力例2をコピペしたのみ)

下記のコードでは、変数tempに標準入力を用いて数値を入れてからprint文で出力する動作をループで5回繰り返しています。

その際、数値ですのでintの中にinputを使っています。

#ループを使って標準入力で整数を取得し出力する
for i in range(5):
    temp=int(input())
    print(temp)

コードと実行結果です。

Pythonは以上です。


今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

緑色のセルA2(2,1)から始まる5行1列に入力した整数を取得して、それを黄色いセルC2(2,3)から始まる5行1列に出力します。

その際、この黄色いセルの所に、二次元配列として取得した整数が格納された配列を出力します。

行数と列数が必ず一致する必要があります。
そうしないとエラーが出ますので、これは体感的に習得するのが早いと思います。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:SpreadSheetAppから階層を辿って現在のシートにアクセスする

2:緑色のセルA2(2,1)から5行1列分の整数を取得して、5つの整数を二次元配列numに格納

3:スプレッドシートの出力前に5つの整数が格納された二次元配列numを取得できたことをログ出力で確認する

4:スプレッドシートの黄色いセルC2(2,3)から始まる5行1列分に二次元配列numを出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

このコードを関数「standardInput3」の中に書いていきます。

Standard Inputで標準入力の意味です。

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

function standardInput2() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();
  
}

手順2:緑色のセルA2(2,1)から始まる5つの整数を取得して、これらの整数を二次元配列numに格納

num=ss.getRange(2,1,5).getValues();

セルA2は(2,1)で、その後の「5」は5行分です。

1列分の列数も加えて(2,1,5,1)と指定しても数値を取得出来ますが、1列の場合は省略が可能です。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルA2(2,1)から始まる5つの整数を取得して二次元配列numに格納
  const num=ss.getRange(2,1,5).getValues();
  
}

手順3:スプレッドシートの出力前に5つの整数が格納された二次元配列numを取得できたことをログ出力で確認する

console.log(num);

下記のコードと、その実行結果のログ出力です。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,5).getValues();

  //スプレッドシートの出力前にnumに二次元配列として5つの整数を取得して格納出来たことをログ出力で確認
  console.log(num);
  
}

手順4:スプレッドシートの黄色いセルに二次元配列numを出力する

ss.getRange(2,3,5).setValues(num);

下記のコードと実行後のスプレッドシートです。

C2から出力するので、(2,3)になり、5行分なので(2,3,5)です。
こちらも列の1列分は省略可能です。
(2,3,5,1)と書いても無事に実行出来ます。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,5).getValues();
  console.log(num);

  //スプレッドシートの黄色いセルC2(2,3)から始まる5行分の二次元配列numを出力する
  ss.getRange(2,3,5).setValues(num);
  
}

GASは以上です。


お疲れ様でした。ブレイクタイムPhotoは、

石神井公園の桜です。

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

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力4」へ戻る
paizaレベルアップ問題集_ PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介