この記事を読むことで、Pythonで標準入力を用いて数列の数と全ての数列をループの中で出力することが可能になります。GASではスプレッドシートで値を取得して、ループを使わずに出力しています。
このコーナーでは、学習コンテンツpaizaラーニングのレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。
GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。
paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験
paizaでの解答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。
改行区切りでの N 個の整数の入力 (paizaランク D 相当)
問題:
1 行目で整数 N が与えられます。
2 行目以降で、N 個の整数 a_1, … , a_N が N 行で与えられます。
a_1, … , a_N を改行区切りで出力してください。
ではまず、Pythonで解いてみます。
今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。
■ Pythonでの解き方 ■
手順として、
1:標準入力で整数の数Nを取得する
2:ループの中で標準入力を使い、N個全ての整数を出力する
の2ステップで行います。
今回は入出力例1を用います。
入力例1
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
出力例1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
まず、準備として、paiza.ioにこのように入力します。
(入力例1 をコピペしたのみ)
下記のコードで入力と出力を行います。
#1:標準入力で整数の数Nを取得する
N=int(input())
#2:ループの中で標準入力を使い、N個全ての整数を出力する
for i in range(N):
temp=int(input())
print(temp)
このコードの実行(出力)結果です。
Pythonは以上です。
次は、GASで解いて行きます。
■ GASでの解き方 ■
今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。
緑色のセルに入力した、数列の個数を取得して、灰色の所の数列を取得し、それを黄色いセルに出力します。その際、この灰色のセル、黄色いセルの所には、二次元配列として取得した整数が格納された配列を出力します。
※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※
手順はこのようになります。
1:SpreadSheetAppから階層を辿って現在のシートにアクセスする
2:緑のセルにある数列の個数Nを取得
3:灰色のセルN行1列を配列arrayに取得
4:取得したarrayをログ出力する
5:スプレッドシートの黄色い所に格納する
手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする
const ss = SpreadsheetApp.getActiveSheet();
ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。
手順2:緑のセルにある数列の個数Nを取得
const N=ss.getRange(1,1).getValue();
手順3:灰色のセルN行1列を配列arrayに取得
const array=ss.getRange(2,1,N).getValues();
手順4:取得したarrayをログ出力する
console.log(array);
手順5:スプレッドシートの黄色い所に格納する
ss.getRange(1,3,N).setValues(array);
実行後のスプレッドシートです。
GASでの全コードはこちらになります。
function standardInput24(){
//SpreadSheetAppから階層を辿って現在のシートにアクセスする
const ss=SpreadsheetApp.getActiveSheet();
//緑のセルにある数列の個数Nを取得
const N=ss.getRange(1,1).getValue();
//灰色のセルN行1列を配列arrayに取得
const array=ss.getRange(2,1,N).getValues();
//取得したarrayをログ出力する
console.log(array);
//スプレッドシートの黄色い所に格納する
ss.getRange(1,3,N).setValues(array);
}
宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。
代々木公園のバラ
プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。