この記事を読むことで、PythonとGASで空白スペースを含む1行の文字列を取得して、空白スペースの所で区切って、ループを使って10個の文字列に順に出力する方法の概要を掴めます。
また、GASではスプレッドシートを用いて値を取得して出力しています。
更にPythonではループを基本的な書き方と内包表記の書き方の2通りで掲載します。
このコーナーでは、プログラミング学習コンテンツpaizaラーニングのレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。
Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。
半角スペース区切りの 10 個の入力 (paizaランク D 相当)
問題:文字列 s_1, s_2, … s_9, s_10 が半角スペースで区切られて 1 行で与えられます。各文字列を出力するごとに改行し 10 行で出力してください。
ではまず、Pythonで解いてみます。
今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。
■ Pythonでの解き方 ■
手順として、
1:標準入力で空白スペースを含む文字列を区切って取得する
2:取得した文字列がリストになっていることを確認する
3:ループを使って出力する
の3ステップで行います。
今回は下記の入出力例1を用います。
入力例1
VypymzW25l 3xsXWAK NYwbs2MRC kh4 mr38o8W9 94 fEJ 6THlW fJFTy n
出力例1
VypymzW25l
3xsXWAK
NYwbs2MRC
kh4
mr38o8W9
94
fEJ
6THlW
fJFTy
n
まず、準備として、paiza.ioにこのように入力します。
(入力例1をコピペしたのみ)

手順1で標準入力で空白文字を区切って取得します。
#標準入力で空白スペースを含む文字列を区切って取得する
s=input().split(' ')手順2では先ほどの手順で取得した文字列を出力して、リストとして空白区切りで出力されていることを確認します。
s=input().split(' ')
#取得した文字列がリストになっていることを確認する
print(s)
手順3ではループを使って出力します。
s=input().split(' ')
print(s)
#ループを使って出力する
for word in s:
print(word)コードと実行結果です。

これを内包表記を使って書いた場合のコードです。
先ほどのコードと見比べると1行になり、よりシンプルなコードになりました。
コードと実行結果です。
s=input().split(' ')
print(s)
for word in s:
print(word)
#内包表記を使ったループで出力する
print('--- 内包表記 ---')
[print(word) for word in s]
ただ、このままでは求められる出力結果に対して冗長な部分があるので、不要な箇所はコメントアウトします。
Pythonでコメントアウトする場合、1行でしたら「#(シャープ)」ですが、複数行をコメントアウトする際には、「’(シングルクォーテーション)」を3つで「”’」か、「”(ダブルクォーテーション)」を3つで「”””」を使います。
この記事では「”’」とシングルクォーテーションを使っております。
s=input().split(' ')
'''
print(s)
for word in s:
print(word)
#内包表記を使ったループで出力する
print('--- 内包表記 ---')
'''
[print(word) for word in s]更に提出ように最小限のコードになるようにしたスッキリなコードはこちらになります。
#標準入力で空白スペースを含む文字列を区切って取得する
s=input().split(' ')
#内包表記を使ったループで出力する
[print(word) for word in s]paiza提出用の出力結果です。

■ GASでの解き方 ■
今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。
ここも、paiza問題集の入力例をそのまま緑のセルB1に貼りつけたのみです。
(セル結合はしておりません。)

緑色のセルB1(1行,2列)の所に入力した文字列を取得して、それを黄色い所B3〜B12まで縦に10セル分に単語を出力します。
その際、この黄色く塗りつぶしたセルの所に、二次元配列として取得した文字列が格納された配列を出力します。
※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※
手順はこのようになります。
1:SpreadSheetAppから階層を辿って現在のシートにアクセスする
2:緑色のセルのB1を取得して、空白区切り文字の所で区切って配列arrayに格納する
3:配列として格納出来たことをログ出力で確認する
4:スプレッドシートに出力するため、二次元配列として取得するarray2を宣言する
5:ループを使ってpushメソッドでarray2にarrayを二次元配列として追加する
6:スプレッドシートに出力する前にarray2に二次元配列として格納されていることをログ出力で確認する
7:スプレッドシートの黄色いセルに出力する
手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする
const ss = SpreadsheetApp.getActiveSheet();
ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。
これを関数「standardInput4」に書いていきます。
Standard Inputで標準入力の意味です。
function standardInput4() {
//SpreadSheetAppから階層を辿って現在のシートにアクセスする
const ss=SpreadsheetApp.getActiveSheet();
}手順2:緑色のセルB1を取得して、空白区切り文字の所で区切って配列arrayに格納する
const array=ss.getRange(1,2).getValue().split(‘ ‘);
function standardInput4() {
const ss=SpreadsheetApp.getActiveSheet();
//緑色のセルの所を取得して、空白区切り文字の所で区切って配列arrayに格納する
const array=ss.getRange(1,2).getValue().split(' ');
}手順3:配列arrayに格納出来たことをログ出力で確認する
console.log(array);
コードとログ出力結果です。
function standardInput4() {
const ss=SpreadsheetApp.getActiveSheet();
const array=ss.getRange(1,2).getValue().split(' ');
//配列として格納出来たことをログ出力で確認する
console.log(array);
}
手順4:スプレッドシートに出力するため、二次元配列として取得するarray2を宣言する
const array2 = [];
function standardInput4() {
const ss=SpreadsheetApp.getActiveSheet();
const array=ss.getRange(1,2).getValue().split(' ');
console.log(array);
//スプレッドシートに出力するため、二次元配列として取得するarray2を宣言する
const array2=[];
}手順5:ループを使ってpushメソッドでs2にsを2次元配列として追加する
function standardInput4() {
const ss=SpreadsheetApp.getActiveSheet();
const array=ss.getRange(1,2).getValue().split(' ');
console.log(array);
const array2=[];
//ループを使ってpushメソッドでarray2にarrayを2次元配列として追加する
for(let i=0;i<array.length;i++){
array2.push([array[i]]);
}
}手順6:スプレッドシートに出力する前にarray2に二次元配列として格納されていることをログ出力で確認する
console.log(array2);
コードと実行結果のログです。
function standardInput4() {
const ss=SpreadsheetApp.getActiveSheet();
const array=ss.getRange(1,2).getValue().split(' ');
console.log(array);
const array2=[];
for(let i=0;i<array.length;i++){
array2.push([array[i]]);
}
//スプレッドシートに出力する前にarray2に二次元配列として格納されていることをログ出力で確認する
console.log(array2);
}

手順7:スプレッドシートの黄色いセルB3〜B12に10行分の単語を出力する
ss.getRange(3,2,array2.length).setValues(array2);
function standardInput4() {
const ss=SpreadsheetApp.getActiveSheet();
const array=ss.getRange(1,2).getValue().split(' ');
console.log(array);
const array2=[];
for(let i=0;i<array.length;i++){
array2.push([array[i]]);
}
console.log(array2);
//スプレッドシートの黄色いセルB3〜B12の10行分の出力をする
ss.getRange(3,2,array2.length).setValues(array2);
}実行後のスプレッドシートです。

(出力結果を左揃えにしています。)
お疲れ様でした。ブレイクタイムPhotoは、

「しながわ花海道の赤いコスモス」です。
ご精読有難うございました。
■ GASの入門書の紹介です ■
詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)
■ 関連記事 ■
paizaレベルアップ問題集「標準入力3」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ
写真クリエイターとしての活動
自己紹介
