この記事を読むことで、PythonとGASでsplitメソッドを使って文字列を空白部分で分割してリスト(配列)に格納し、ループを使ってリストを出力する方法、Pythonではそのループの記述と対応して、内包表記で書く方法が学べます。GASでは二次元配列として取得、出力する方法が学べます。
このコーナーでは、学習コンテンツpaizaラーニングのレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。
GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。
paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験
paizaでの解答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。
【半角スペース区切りでの文字列の分割】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);
}
宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。
恵比寿ガーデンプレイス、フランスのクリスタルメーカー、バカラのシャンデリア
■ 参考文献の紹介■
じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。
GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。
paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験
プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。