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

この記事を読むことで、Pythonで標準入力を使って、ループを用いて1000行の整数を取得する方法が学べます。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 相当)

問題:
整数 a_1, a_2, … , a_999, a_1000 が 1,000 行で与えられるので a_1, a_2, … , a_999, a_1000 を 1,000 行で出力してください。

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

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

■ Pythonでの解き方 ■

手順として、

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

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

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

入力例1
1189
8004
7243
5507
3237
(省略)


出力例1
1189
8004
7243
5507
3237
(省略)


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

(1000行の一部分です。)

このコードで入出力を行います。
ループを1000回まわして、その中で標準入力で変数tempに代入して、tempを出力しています。

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

このコードの実行(出力)結果です。

(以下、画像は1000行の一部分です。)

Pythonは以上です。

次は、GASで解いて行きます。

■ GASでの解き方 ■

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

緑色の列の所に入力した整数を取得して、それを黄色い所に出力します。その際、この黄色く塗りつぶした列の所に、二次元配列として取得した整数が格納された配列を出力します。

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

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

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

2:緑色のセルの列の整数を取得して1000行の整数を二次元配列numに格納

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

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

手順2:緑色のセルの列の整数を取得して100個の整数を二次元配列numに格納

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

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

console.log(num);

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

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

実行後のスプレッドシートです。

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

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

  //緑色のセルの列の整数を取得して1000行の整数を二次元配列numに格納
  num=ss.getRange(2,1,1000).getValues();

  //スプレッドシートの出力前に1000行の整数が格納された二次元配列numを取得できたことをログ出力で確認する
  console.log(num);

  //スプレッドシートの黄色い列の所に二次元配列numを出力する
  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、その他双極性障害やHSP(5人に1人の繊細さん)などの生きづらさを抱えておりますが、それでも楽しく生きて行きたいです!! 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。