paiza レベルアップ問題集 「FINAL問題 【行入力】1,000 行の入力」をPythonとGASで解いてみた

この記事を読むことで、ループを使って1000行分もの文字列をPythonの標準入力で文字列を取得・出力する方法、GASでは最初に入力欄を作成して準備を整えた上で、その後に二次元配列として取得、出力する方法が学べます。

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

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

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

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

paizaでの解答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。

【行入力】1,000 行の入力 (paizaランク D 相当)

問題:
s_1, s_2, s_3, … s_999, s_1000 の 1,000 個の文字列が与えられます。
文字列を与えられた順番通りに出力してください。

この記事では、下記の入力例1の場合を例にして、文字列の出力を行います。

入力例1
paiza0
paiza1
paiza2
paiza3
paiza4
paiza5
paiza6
paiza7
paiza8
paiza9



(以下略)



paiza990
paiza991
paiza992
paiza993
paiza994
paiza995
paiza996
paiza997
paiza998
paiza999

出力例1

paiza0
paiza1
paiza2
paiza3
paiza4
paiza5
paiza6
paiza7
paiza8
paiza9



(以下略)



paiza990
paiza991
paiza992
paiza993
paiza994
paiza995
paiza996
paiza997
paiza998
paiza999

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

今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。

■ Pythonでの解き方 ■

下準備として、paiza.ioにこの様に入力します。
(入力例1をそのままioにコピーしただけ。)

(以下略・・・)

手順として、

1:問題文から1000行と分かっているのでループを1000回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する

で、行います。

この手順で作成したプログラムを実行した出力結果です。

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

#問題文から1000行と分かっているのでループを1000回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する
for i in range(1000):
    temp=input()
    print(temp)

■ GASでの解き方 ■

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

今回はA列の入力欄にpaiza0,paiza1,paiza2・・・paiza997,paiza998,paiza999と1000行ものデータを用意しなければなりません。さすがに手打ちではきついので、まず最初にこのようなコードを書いきました。

準備の手順です。

1:SpreadSheetAppからアクティブシートにアクセスする

2:A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言

3:ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく

4:スプレッドシートのA列に格納する前にログで確認する

5:スプレッドシートのA列の入力の下に配列columnAの値を格納する

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

手順2:A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言

let columnA=[];

手順3:ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく

//ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく
  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

手順4:スプレッドシートのA列に格納する前にログで確認する

console.log(columnA);

ログでは1000行は多過ぎて、全ては表示しきれませんでした。

手順5:スプレッドシートのA列の入力の下に配列columnAの値を格納する

ss.getRange(2,1,columnA.length).setValues(columnA);

そのログ出力と実行結果です。

スプレッドシートはpaiza0からpaiza999までの1000行表示出来ました。

(・・・中略・・・)

ここまでのコードです。

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

  //A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言
  let columnA=[];

  //ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく
  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

  //スプレッドシートのA列に格納する前にログで確認する
  console.log(columnA);

  //スプレッドシートのA列の入力の下に配列columnAの値を格納する
  ss.getRange(2,1,columnA.length).setValues(columnA);
}

準備が整ったところで、A列の文字入力部分を二次元配列として取得して、C列の黄色いセルにそのまままの順番で文字列を出力します。プログラミングの手順は下記のようになります。

6:A列の値を定数numに格納する

7:numをC列に出力する

手順6:A列の値を定数numに格納する

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

手順7:numをC列に出力する

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

実行後のスプレッドシートです。見やすくするように、最初の行を固定していあります。

(・・・中略・・・)

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

function standardInput05() {

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

  //A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言
  let columnA = [];

  //ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく
  for (let i = 0; i < 1000; i++) {
    columnA.push(['paiza' + i]);
  }

  //スプレッドシートのA列に格納する前にログで確認する
  console.log(columnA);

  //スプレッドシートのA列の入力の下に配列columnAの値を格納する
  ss.getRange(2, 1, columnA.length).setValues(columnA);

  //A列の値を定数numに格納する
  const num = ss.getRange(2, 1, 1000).getValues();

  //numをC列に出力する
  ss.getRange(2, 3, 1000).setValues(num);

}

宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。

東京都足立区、遊歩道の桜

■ 参考文献の紹介■

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

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

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

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

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

プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。

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

投稿者: nekosiestr

プログラミング学習中の発達障害者です。宜しくお願いします。 趣味で写真を撮っています。 プログラミングは、GAS/HTML/CSS/JavaScript/jQuery/PHP、 発達障害は、自閉症スペクトラムASD/ADHD、 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。

モバイルバージョンを終了