【paiza問題集】「標準入力その2」をPythonとGASの両方で解いたコード紹介リンク集

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

■ 標準入力メニュー2 ■

2 つの文字列の半角スペース区切りでの分割 Python3編

3 つの文字列の半角スペース区切りでの分割 Python3編


【半角スペース区切りでの文字列の分割】5 つの文字列の半角スペース区切りでの分割 Python3編

paiza問題集のPythonとGASのコード紹介へ戻る
初めてのGASへ戻る


自己紹介へ

【paiza問題集】「標準入力その1」をPythonとGASの両方で解いたコード紹介リンク集

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

1 行の入力 Python3編

2 行の入力 Python3編

3 行の入力 Python3編

10 行の入力 Python3編

【行入力】1,000 行の入力 Python3編

paiza問題集のPythonとGASのコード紹介へ戻る
初めてのGASへ戻る


自己紹介へ

【GASの最初の一歩】HUNTER×HUNTERの自作サンプル

この記事のシリーズを読むことで、アニメHUNTER×HUNTER(ハンターハンター)を通してGAS(Google Apps Script)の最初の一歩が学べます。

キャラクターと一緒に冒険している感覚で自作サンプルのコードを動かして頂けたらきっと楽しいと思います♪


episode1 「セル操作で入力と消去」

episode2 「文字入力と消去をボタン操作で行う」

episode3 「範囲を指定してまとめて入力(二次元配列は団地だ!)」

episode4 「ヒソカチェックで、IFとループを一気に習得」

episode5 「指定したセル範囲のフォントを変える」

episode6 「指定したセル範囲に色を付ける」

episode7 「キャラの身長で演算(平均・条件に該当する数のカウント)」

episode8 (最終回)「キャラの身長をシンプルなグラフ化する」

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

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

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

初めてのGoogle Apps Scriptに戻る
写真クリエイターとしての活動

自己紹介

初めてのGoogle Workspace 〜スプレッドシートやChrome、Googleカレンダーなど〜

この連載記事では、スプレッドシートやフォーム、ChromeといったGoogle Workspaceについて、忙しい方向けにオススメの動画と本を紹介しております。

また、スプレッドシートに関しては、オリジナル関数の自作サンプルの記事も書いていて、図と文書を用いて解説しております。

ツール別に書籍や動画といった教材を掲載致しましたので、

・就活準備の学生の方

・新卒でPCスキルを付けたい方


・既に社会人として働いて、業務の生産性を向上させたい方


・中高年の学び直しや社会復帰を目標とされる方



にとって、「学びのハードルを極限まで下げるお手伝い」をしております。

■ Google Workshapce の各ツール ■

スプレッドシート

フォーム


カレンダー

Chrome

Gmail

Drive

ドキュメント

スライド

Map

GAS

■ 関連記事 ■


とりあえず事務職で働きたいから手っ取り早くExcel教えてくれ!

急にプレゼンすることになったから手っ取り早くパワポ教えてくれ!

Wordのポイントを手っ取り早く教えてくれ!



メインメニュー

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

【paiza レベルアップ問題集】標準入力その2 「FINAL問題 【半角スペース区切りでの文字列の分割】5 つの文字列の半角スペース区切りでの分割 」をPythonとGASで解いたコード紹介

この記事を読むことで、PythonとGASでsplitメソッドを使って文字列を空白部分で分割してリスト(配列)に格納し、ループを使ってリストを出力する方法、Pythonではそのループの記述と対応して、内包表記で書く方法が学べます。GASでは二次元配列として取得、出力する方法が学べます。

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

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

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

GAS(Google Apps Script)はスプレッドシートを使ってコードを書いていおります。


【半角スペース区切りでの文字列の分割】5 つの文字列の半角スペース区切りでの分割 (paizaランク D 相当)

問題:文字列one two three four fiveを、半角スペースで分割して出力してください。

入力される値
なし


期待する出力
one two three four fiveを半角スペースで区切り、区切られた文字列を改行区切りにして 5 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。

one
two
three
four
five

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

■ Pythonでの解き方 ■

手順として、

1:リストarrayにsplitメソッドを使って空白で文字を区切って配列に入力

2:配列を確認

3:ループで出力

で、行います。

手順1で、文字列「one two three four five」にsplitメソッドを使って空白の所で文字列を分割してリストに代入します。
その部分のコードです。

#文字列を分割してリストarrayに格納
array='one two three four five'.split(' ')

手順2では、リストarrayに分割して文字列がそれぞれ格納したことをprint文で確認します。

#リストarrayをそのまま出力
print(array)

その出力結果です。

手順3では、リストarrayに格納されたことが確認できたので、arrayをループで出力します。そのコードと出力結果です。

#ループでリストを出力する
for num in array:
    print(num)

このループの所を内包表記で記述したコードです。先ほどのシンプルなループのコードと比較すると、内包表記が分かりやすくなります。

#ループでリストを出力する
for num in array:
    print(num)

#内包表記でリストを出力する
[print(num) for num in array]

これまでの手順で作成したコードです。

#文字列を分割してリストarrayに格納
array='one two three four five'.split(' ')

#リストをそのまま表示する
print(array)


#ループでリストを出力する
for num in array:
    print(num)

#内包表記でリストを出力する
[print(num) for num in array]

求められる出力に対して冗長な箇所はコメントアウトします。

#文字列を分割してリストarrayに格納
array='one two three four five'.split(' ')

#リストをそのまま表示する
#print(array)


#ループでリストを出力する
#for num in array:
#    print(num)

#内包表記でリストを出力する
[print(num) for num in array]

提出用にスッキリと最小限のコードに致しました。

#文字列を分割してリストarrayに格納
array='one two three four five'.split(' ')

#内包表記でリストを出力する
[print(num) for num in array]

プログラムを実行した出力結果です。

■ GASでの解き方 ■

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

この黄色く塗りつぶしたセルの所に二次元配列として取得した文字列が格納された配列を出力します。
空白区切りの文字を分割して配列に格納して、更にループを使って二次元配列にします。

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

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

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

2:splitメソッドを使って文字列を分割して配列arrayに代入する

3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

7:array2をスプレッドシートの黄色いセルに出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

手順2:splitメソッドを使って文字列を分割して配列arrayに代入する

const array=’one two three four five’.split(‘ ‘);

手順3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

console.log(array);

手順4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

let array2=[];

手順5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

//ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for(let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }

手順6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

console.log(array2);

手順7:array2をスプレッドシートの黄色いセルに出力する

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

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

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

function standardInput08() {

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

  //splitメソッドを使って文字列を分割して配列arrayに代入する
  const array = 'one two three four five'.split(' ');

  //分割した文字列が配列arrayに追加出来たことをログ出力で確認する
  console.log(array);

  //配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する
  let array2 = [];

  //ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for (let i = 0; i < array.length; i++) {
    array2.push([array[i]]);
  }

  //スプレッドシートに出力する前に、ログでarray2を出力して確認する
  console.log(array2);

  //array2をスプレッドシートの黄色いセルに出力する
  ss.getRange(2, 1, array2.length).setValues(array2);

}

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

恵比寿ガーデンプレイス、フランスのクリスタルメーカー、バカラのシャンデリア

←前の問題へ          標準入力その3へ→

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

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

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

■ 関連記事 ■

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

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

【paiza レベルアップ問題集】標準入力その2 「STEP: 2 3 つの文字列の半角スペース区切りでの分割」をPythonとGASで解いたコード紹介

この記事を読むことで、PythonとGASでsplitメソッドを使って文字列を空白部分で分割してリスト(配列)に格納し、ループを使ってリストを出力する方法、Pythonではそのループの記述と対応して、内包表記で書く方法が学べます。GASでは二次元配列として取得、出力する方法が学べます。

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

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

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

GAS(Google Apps Script)はスプレッドシートを使ってコードを書いていおります。


3 つの文字列の半角スペース区切りでの分割 (paizaランク D 相当)

問題:
文字列He likes paizaを、半角スペースで分割して出力してください。

入力される値
なし

期待する出力
He likes paizaを半角スペースで区切り、区切られた文字列を改行区切りにして 3 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。

He
likes
paiza

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

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

■ Pythonでの解き方 ■

手順として、

1:リストarrayにsplitメソッドを使って空白で文字を区切って配列に入力
2:配列を確認
3:ループで出力

で、行います。

手順1で、文字列「He likes paiza」にsplitメソッドを使って文字を分割します。
その部分のコードです。

#splitメソッドで分割したものをリストarrayに代入
array='He likes paiza'.split(' ')

手順2では、リストarrayに分割して文字列がそれぞれ格納したことをprint文で確認します。

#リストarrayをそのまま出力
print(array)

その出力結果です。

リストarrayに格納されたことが確認できたので、arrayをループで出力します。
そのコードと出力結果です。

#リストarrayをループで改行して出力する
for string in array:
    print(string)

このループの所を内包表記で記述したコードです。

#リストarrayをループで改行して出力する
for string in array:
    print(string)
    
#内包表記で出力する
[print(string) for string in array]

この手順で作成したコードです。

#splitメソッドで分割したものをリストarrayに代入
array='He likes paiza'.split(' ')

#リストarrayをそのまま出力
print(array)

#リストarrayをループで改行して出力する
for string in array:
    print(string)
    
#内包表記で出力する
[print(string) for string in array]

求められる出力に対して冗長な箇所はコメントアウトします。

#splitメソッドで分割したものをリストarrayに代入
array='He likes paiza'.split(' ')

#リストarrayをそのまま出力
#print(array)

#リストarrayをループで改行して出力する
#for string in array:
#    print(string)
    
#内包表記で出力する
[print(string) for string in array]

提出用にスッキリと最小限のコードに致しました。

#splitメソッドで分割したものをリストarrayに代入
array='He likes paiza'.split(' ')

#内包表記で出力する
[print(string) for string in array]

プログラムを実行した出力結果です。

■ GASでの解き方 ■

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

この黄色く塗りつぶしたセルの所に二次元配列として取得した文字列が格納された配列を出力します。空白区切りの文字を分割して配列に格納して、更にループを使って二次元配列にします。

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

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

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

2:splitメソッドを使って文字列を分割して配列arrayに代入する

3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

7:array2をスプレッドシートの黄色いセルに出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

手順2:splitメソッドを使って文字列を分割して配列arrayに代入する

const array=’He likes paiza’.split(‘ ‘)

手順3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

console.log(array);

手順4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

let array2=[];

手順5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

//ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for(let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }

手順6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

console.log(array2);

手順7:array2をスプレッドシートの黄色いセルに出力する

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

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

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

function standardInput07() {

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

  //splitメソッドを使って文字列を分割して配列arrayに代入する
  const array = 'He likes paiza'.split(' ')

  //分割した文字列が配列arrayに追加出来たことをログ出力で確認する
  console.log(array);

  //配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する
  let array2 = [];

  //ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for (let i = 0; i < array.length; i++) {
    array2.push([array[i]]);
  }

  //スプレッドシートに出力する前に、ログでarray2を出力して確認する
  console.log(array2);

  //array2をスプレッドシートの黄色いセルに出力する
  ss.getRange(2, 1, array2.length).setValues(array2);

}

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

お台場の観覧車、扇風機!?

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

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

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

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

■ 関連記事 ■

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

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

【paiza レベルアップ問題集 】標準入力その2「STEP: 1 2 つの文字列の半角スペース区切りでの分割」をPythonとGASで解いたコード紹介

この記事を読むことで、PythonとGASでsplitメソッドを使って、文字列を空白部分で分割してリスト(配列)に格納し、ループを使ってリストを出力する方法、Pythonではそのループの記述と対応して、内包表記で書く方法、GASでは二次元配列として取得、出力する方法を掲載致しました。

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

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

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

GAS(Google Apps Script)はスプレッドシートを使ってコードを書いていおります。


1 2つの文字列の半角スペース区切りでの分割 (paizaランク D 相当)

問題:
文字列Hello paizaを、半角スペースで分割して出力してください。

入力される値
なし

期待する出力
Hello paizaを半角スペースで区切り、区切られた文字列を改行区切りにして 2 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。

Hello
paiza

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

手順として、

1:リストarrayにsplitメソッドを使って空白で文字を区切って配列に入力

2:配列を確認

3:ループで出力

で、行います。

手順1で、文字列「Hello paiza」にsplitメソッドを使って文字を分割します。
その部分のコードです。

#配列arrayにsplitメソッドで空白を区切りにして格納する
array='Hello paiza'.split(' ')

手順2でリストarrayに分割して文字列がそれぞれ格納したことをprint文で確認します。

array='Hello paiza'.split(' ')

#配列arrayをそのまま出力
print(array)

その出力結果です。

リストarrayに格納されたことが確認できたので、arrayをループで出力します。
変数msgに配列の中身を順番に代入して出力しています。
そのコードと出力結果です。

array='Hello paiza'.split(' ')

print(array)

#配列arrayをループで出力
for msg in array:
    print(msg)

このループの所を内包表記で記述したコードと出力結果です。

array='Hello paiza'.split(' ')

print(array)

for msg in array:
    print(msg)
    
#配列arrayをループで出力する所を内表表記で記述
[print(msg) for msg in array]

配列arrayの出力確認や通常のループと内包表記の2度使っている箇所が冗長ですのでコメントアウトしたコードです。

array='Hello paiza'.split(' ')

#print(array)

'''
for msg in array:
    print(msg)
'''
    
#配列arrayをループで出力する所を内表表記で記述
[print(msg) for msg in array]

出力結果です。

最後に提出用にスッキリと最小限のコードに致しました。

array='Hello paiza'.split(' ')

#配列arrayをループで出力する所を内表表記で記述
[print(msg) for msg in array]


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

この黄色く塗りつぶしたセルの所に二次元配列として取得した文字列が格納された配列を出力します。空白区切りの文字を分割して配列に格納して、更にループを使って二次元配列にします。

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

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

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

2:splitメソッドを使って文字列を分割して配列arrayに代入する

3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

7:array2をスプレッドシートのセルA2を起点とした黄色いセルに出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

このコードを関数「standardInput1」の中に書いていきます。
Standard Inputで、標準入力の意味です。

function standardInput1() {

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

手順2:splitメソッドを使って文字列を分割して配列arrayに代入する

const array=’Hello paiza’.split(‘ ‘);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  
  //splitメソッドを使って文字列を分割して配列arrayに代入する
  const array='Hello paiza'.split(' ');

}

手順3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

console.log(array);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  
  //分割した文字列が配列arrayに追加出来たことをログ出力で確認する
  console.log(array);

}

手順4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

let array2=[];

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  //配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する
  let array2=[];

}

手順5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  let array2=[];

  //ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for (let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
}

手順6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

console.log(array2);

コードと出力結果です。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  let array2=[];

  for (let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
  
  //スプレッドシートに出力する前に、ログでarray2を出力して確認する
  console.log(array2);

}

手順7:array2をスプレッドシートのセルA2を起点とした黄色いセルに出力する

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

セルA2(2,1)を起点として、配列の長さ分だけ黄色い所に出力します。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  let array2=[];

  for (let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
  
  console.log(array2);

  //スプレッドシートのセルA2を起点とした黄色いセルに出力する
  ss.getRange(2,1,array2.length).setValues(array2);

}

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


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

よみうりランドのジュエルミネーションの鉛筆工場です。
Xmasの時期に撮影しました。

←標準入力その1へ          次の問題へ→

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

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

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

■ 関連記事 ■

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

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

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

この記事を読むことで、ループを使って1000行分もの文字列をPythonの標準入力で取得・出力する方法と、GASではスプレッドシートを用いて1000行の配列をループで作成して、それを別の列に出力する方法を掲載しております。

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

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

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


【行入力】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にこの様に入力します。
(入力例1をそのままioにコピーしたのみで、画像はその一部です。)

(以下略・・・)

手順として、

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

で、行います。

Pythonのコードはこちらになります。
また、コメントが複数行に渡る場合は「’」のシングルクォーテーション3つ「”’」か「”」のダブルクォーテーション3つの「”””」でコメントの開始位置と終了位置に掲載します。

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

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

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

(以下略・・・)


次は、同じ問題を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から階層を辿ってアクティブシートにアクセスしています。

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

function loop1000() {

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

}

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

let columnA=[];

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();

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

}

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

ループ内の変数iを0から999まで変化させて、文字列「paiza」に「+i」でくっつけて、paiza0〜paiza999をループを利用して生成しています。

また、スプレッドシートは二次元配列の為、「 [‘paiza’ + i ] 」としています。

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

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

}

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

console.log(columnA);

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

  //A列に出力前にログで二次元配列が生成できたことを確認
  console.log(columnA);

}

実行した所、ログでは1000行は多過ぎて全ては表示しきれませんでしたが、二次元配列の形になっていることは確認出来ました。

(・・・ 途中省略 ・・・)

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

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

paiza0〜paiza999まで出力するセルはA2を起点としているので、2行目1列で(2,1)としています。

その後にこの配列の長さである、columnA.lengthで1000行分を確保しています。

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

  console.log(columnA);

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

}

このコードの実行結果です。

(・・・ 途中省略 ・・・)

スプレッドシートはpaiza0からpaiza999までの1000行表示出来ました。
最初の行が見えるように行固定致しました。


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

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

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

8:numをC列に出力する

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

これを関数「standardInput5」の中に書いていきます。
Standard Inputで、標準入力の意味です。

function standardInput5() {

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

}

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

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

function standardInput5() {

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

}

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

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

function standardInput5() {

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

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

}

実行結果です。

(・・・中略・・・)

ここまでで、「標準入力その1」は終了致しました。


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

遊歩道で撮影した桜です。

←前の問題へ    標準入力その2へ→      

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

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

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

■ 関連記事 ■

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

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

【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のコード紹介トップページへ

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

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

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

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

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

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


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

問題:
文字列 s, t, u が 3 行で与えられるので、s, t, u の 3 行をそのまま出力してください。

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

入力例1
abc
def
ghi

出力例1
abc
def
ghi


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

■ Pythonでの解き方 ■

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

手順として、

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

で、行います。
こちらがPythonのコードになります。

#ループを3回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する
for i in range(3):
    temp=input()
    print(temp)

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


■ GASでの解き方 ■

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

スプレッドシートの緑のセルに文字列「abc」,灰色のセルに「def」,ピンクのセルに「efg」を入力しました。
これを二次元配列として取得して、黄色いセルにそのままの順番で文字列を出力します。

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

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

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

2:最初の文字列「abc」が入っている緑のセルA1と、その下の灰色のセル「def」が入っているセルA2、最後のピンクのセルA3
「ghi」を配列arrayに3行1列の二次元配列として取得する

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

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

関数「standardInput3」を書いていきます。Standard Inputは標準入力の意味です。

function standardInput3() {

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

手順2:最初の文字列「abc」が入っている緑のセルA1と、その下の灰色のセルA2の「def」と、最後のピンクのセルA3に入っている「ghi」を配列arrayに3行1列の二次元配列として取得する

const array=ss.getRange(1,1,3).getValues();

valueではなく、valuesと「s」を付けると複数の文字列を取得できます。
コメントが複数行に渡る際は「/*」と「*/」で囲います。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();

  /*文字列「abc」が入っている緑のセルA1と
  その下の灰色のセル「def」が入っているセルA2と
  最後の「ghi」が入っているピンクのセルA3を
  配列arrayに3行1列の二次元配列として取得する
  */
  const array = ss.getRange(1,1,3).getValues();
 
}

手順3:配列arrayに文字列が出力出来たことをログ出力で確認する

console.log(array);

配列arrayを出力して、A1,A2,A3の文字列が無事に配列に格納されていることを確認します。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array = ss.getRange(1,1,3).getValues();

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

上記の実行結果です。

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

ss.getRange(6,1,array.length).setValues(array);

スプレッドシートのA6である6行目1列目から配列arrayの長さである3行分を確保してarrayを出力しています。

array.lengthでlengthメソッドを使って配列の長さである3を求めています。
これで3行分が確保されて出力されます。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array = ss.getRange(1,1,3).getValues();
  console.log(array);
  
  //lengthメソッドを用いて配列arrayの長さを求める
  console.log(array.length);

  //スプレッドシートの黄色いセルA6から3行分二次元配列arrayを出力する
  ss.getRange(6,1,array.length).setValues(array);

}

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

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

お台場の中でもオススメスポット、モノレールゆりかもめ線 芝浦ふ頭のレインボーブリッジです。

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

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

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

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

■ 関連記事 ■

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

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