【paiza レベルアップ問題集】標準入力その1 「STEP: 4 10 行の入力」をPythonとGASで解いたコード紹介

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

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

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

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


10 行の入力 (paizaランク D 相当)

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

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

入力例1
one
two
three
four
five
six
seven
eight
nine
ten

出力例1
one
two
three
four
five
six
seven
eight
nine
ten

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


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

手順として、

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

で、行います。

Pythonのコードはこちらになります。
尚、Pythonでコメントが複数行に渡る場合はコメント開始と終了の箇所に「’」3つの「”’」と打ちます。 (「”」を3つの「”””」でも可能です。)

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

for i in range(10):
    temp=input()
    print(temp)

実行結果です。


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

スプレッドシートの緑のセルに文字列「one,two,・・・,nine,ten」を入力しました。
これを二次元配列として取得して、黄色いセルにそのまままの順番で文字列を出力します。

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

手順は以下の様になります。

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

2:スプレッドシートの緑のセルの文字列「one,two,・・・,nine,ten」が入っている箇所をgreenArrayに10行1列の二次元配列として取得する

3:配列greenArrayに文字列が取得出来たことをログ出力で確認する

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

関数「standardInput4」の中にコードを書いていきます。
standardInputで標準入力の意味です。

function standardInput4() {

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

手順2:スプレッドシートの緑のセルの文字列「one,two,・・・,nine,ten」が入っている箇所を緑の配列の意味のgreenArrayに10行1列の二次元配列として取得する

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

valueではなく、valuesと「s」を付けると複数の文字列を取得できます。

function standardInput4() {

  const ss=SpreadsheetApp.getActiveSheet();

  //スプレッドシートの緑のセルgreenArrayに10行1列の二次元配列として取得する
  const greenArray=ss.getRange(2,1,10).getValues();

}

手順3:配列greenArrayに文字列が二次元配列として取得出来たことをログ出力で確認する

console.log(greenArray);

このコードで配列のログ出力を行います。

function standardInput4() {

  const ss=SpreadsheetApp.getActiveSheet();
  const greenArray=ss.getRange(2,1,10).getValues();

  //配列greenArrayに文字列が取得出来たことをログ出力で確認する 
  console.log(greenArray);

}

こちらが実行結果です。

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

ss.getRange(2,3,greenArray.length).setValues(greenArray);

スプレッドシートの2行目3列目(C2)から配列greenArrayの長さである10行分を確保して配列を出力しています。

function standardInput4() {

  const ss=SpreadsheetApp.getActiveSheet();
  const greenArray=ss.getRange(2,1,10).getValues();
  console.log(greenArray);
 
  //スプレッドシートの黄色いセルに二次元配列greenArrayを出力する
  ss.getRange(2,3,greenArray.length).setValues(greenArray);

}

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

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

石神井公園(東京都練馬区)でサイクルボートを漕ぎながら撮影した写真

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

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

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

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

■ 関連記事 ■

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

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

投稿者アバター
nekosiestr
いつもブログをご覧頂きまして、誠に有難うございます。 Excelやデータベース、プログラミングを学習する傍ら、趣味で写真を撮影してPhotoshopで編集しております。

投稿者: nekosiestr

いつもブログをご覧頂きまして、誠に有難うございます。