この記事を読むことで、Pythonで標準入力でsplitメソッドを使って、半角スペース区切りの整数を千個取得し、1000行の整数を出力する方法が学べます。GASではスプレッドシートで値を取得して出力しています。
このコーナーでは、学習コンテンツpaizaラーニングのレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。
GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。
paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験
【整数の半角スペース区切りの入力】1,000個の整数の半角スペース区切りの入力 (paizaランク D 相当)
問題:
整数 a_1, a_2, … , a_999, a_1000 が半角スペース区切りで与えられるので、改行区切りにして 1000 行で出力してください。
ではまず、Pythonで解いてみます。
今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。
■ Pythonでの解き方 ■
手順として、
1:標準入力でsplitメソッドを使って半角スペース区切りの整数をリストで取得する
2:取得したリストをループで出力する
の2ステップで行います。
今回は入出力例1(1000個ある為省略)を用います。
まず、準備として、paiza.ioにこのように入力します。
(入力例1 をコピペしたのみ)画像の一部です。
下記のコードで入力と出力を行います。
array=list(map(int,input().rstrip().split(' ')))
#print(array)
for num in array:
print(num)
このコードの実行(出力)結果です。
Pythonは以上です。
次は、GASで解いて行きます。
■ GASでの解き方 ■
今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。
緑色のセルに入力した整数を取得して、それを黄色いセルに出力します。その際、この黄色いセルの所には、splitメソッドを用いて数字列を分割して、二次元配列として取得した整数が格納された配列を出力します。
※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※
手順はこのようになります。
1:SpreadSheetAppから階層を辿って現在のシートにアクセスする
2:緑のセルの整数をsplitメソッドを使って配列arrayに格納する
3:配列arrayのログ出力
4:スプレッドシートに格納する為に、array2に二次元配列として格納する
5:スプレッドシートに格納前に、array2をログ出力する
6:スプレッドシートの黄色い所に格納する
手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする
const ss = SpreadsheetApp.getActiveSheet();
ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。
手順2:緑のセルの整数をsplitメソッドを使って配列arrayに格納する
const array=ss.getRange(1,1).getValue().split(‘ ‘);
手順3:配列arrayのログ出力
console.log(array);
手順4:スプレッドシートに格納する為に、array2に二次元配列として格納する
//スプレッドシートに格納する為に、array2に二次元配列として格納する
let array2=[];
for(let i=0;i<array.length;i++){
array2.push([array[i]]);
}
手順5:スプレッドシートに格納前に、array2をログ出力する
console.log(array2);
手順6:スプレッドシートの黄色い所に格納する
ss.getRange(3,1,array2.length).setValues(array2);
実行後のスプレッドシートです。
GASでの全コードはこちらになります。
function standardInput23(){
//SpreadSheetAppから階層を辿って現在のシートにアクセスする
const ss=SpreadsheetApp.getActiveSheet();
//緑のセルの整数をsplitメソッドを使って配列arrayに格納する
const array=ss.getRange(1,1).getValue().split(' ');
//配列arrayのログ出力
console.log(array);
//スプレッドシートに格納する為に、array2に二次元配列として格納する
let array2=[];
for(let i=0;i<array.length;i++){
array2.push([array[i]]);
}
//スプレッドシートに格納前に、array2をログ出力する
console.log(array2);
//スプレッドシートの黄色い所に格納する
ss.getRange(3,1,array2.length).setValues(array2);
}
宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。
サンシャイン水族館、空飛ぶペンギン
プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。