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

1 行の入力 Python3編

2 行の入力 Python3編

3 行の入力 Python3編

10 行の入力 Python3編

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

paiza問題集のPythonとGASのコード紹介へ戻る
初めての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は、

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

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

■ 関連記事 ■

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

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

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

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

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

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

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


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

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

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

入力例2
heisei31
reiwa1

出力例2
heisei31
reiwa1

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


■ Pythonでの解き方 ■

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

手順として、

1:標準入力で最初の文字列sを読み込む

2:標準入力で次の文字列tを読み込む


3:print文でsを出力する


4:print文でtを出力する

この様に行います。

この手順に沿って作成したPythonのコードと実行した出力結果です。

#標準入力で最初の文字列sを読み込む
s=input()
#標準入力で次の文字列tを読み込む
t=input()

#print文でsを出力する
print(s)
#print文でtを出力する
print(t)


■ GASでの解き方 ■

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

スプレッドシートの緑のセルA1に文字列「heisei31」を入力して、灰色のセルにA2に「reiwa 1」を入力して、それらを二次元配列として取得します。
最後にその二次元配列を黄色いセルにそのままま文字列を出力します。

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

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

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

2:最初の文字列「heisei31」が入っている緑のセルとその下の灰色のセル「reiwa1」が入っているセルを配列arrayに2行1列の二次元配列として取得する

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

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

関数「standardInput2」の中に書いていきます。
Standard Inputで標準入力の意味です。

function standardInput2() {

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

}

手順2:最初の文字列「heisei31」が入っている緑のセルと、その下の灰色のセル「reiwa1」が入っているセルを配列arrayに2行1列の二次元配列として取得する

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

セルA1は1行目1列目ですので、(1,1)と表せて、そこから2行分ですので、(1,1,2)となります。1列取得のみですので、(1,1,2,1)の最後の1は略せます。

2文字分ですので、getValuesと「s」が付きます。
また、複数行に渡るコメントの場合は、「/*」と「*/」で囲います。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();

  /*最初の文字列「heisei31」が入っている緑のセルと、
  その下の灰色のセル「reiwa1」が入っているセルを
  配列arrayに2行1列の二次元配列として取得する*/

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

}

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

console.log(array);

スプレッドシートから取得した文字列を格納した配列arrayが無事にログ出力されることを確認します。

function standardInput2() {

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

 //配列arrayの出力確認
  console.log(array);

}

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

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

スプレッドシートの黄色いセルA5(5,1)とA6に、配列arrayの長さである2行1列分を確保してarrayを出力しています。

array.lengthで、lengthメソッドを使っていることで、配列の長さである2を表しています。

function standardInput2() {

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

  
  console.log(array);

  //lengthメソッドで配列の長さ2が出力される
  console.log(array.length);

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

}

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


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

お台場自由の女神と、レインボーブリッジと、レインボーブリッジの右から1cmぐらいの所にある東京タワーです。

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

■ 関連記事 ■

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

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

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

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

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

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

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


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

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

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

入力例1
paiza

出力例1
paiza

ではまず、Pythonでのコードを掲載致します。


■ Pythonでの解き方 ■

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

手順として、

1:標準入力で最初の単語wordを読み込む

2:print文でwordを出力する

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

#標準入力で文字列を読み込む
word=input()

#その文字列を出力する
print(word)

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


■ GASでの解き方 ■

では、同じ問題をGASで解いてみます。
まず、スプレッドシートに下記の様に入力及びセルの塗り潰しを致しました。

スプレッドシートの緑のセルに文字列「paiza」を入力しました。
これを黄色いセルにそのままま文字列を出力します。

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

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

1:スプレッドシートからアクティブシートにアクセスする

2:緑のセルから文字列を取得する

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

4:文字列をスプレッドシートに二次元配列として取得する配列word2を宣言する

5:word2が二次元配列になる様に、wordを追加する

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

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

手順1: スプレッドシートからアクティブシートにアクセスする

const ss=SpreadsheetApp.getActiveSheet();

関数「standardInput1」の中にコードを書いていきます。
standard input は、標準入力のことです。

function standardInput1() {

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

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

手順2:緑のセルから文字列を取得する

const word=ss.getRange(1,1).getValue();

緑のセルはA1であり、(1,1)と表記出来ます。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑のセルA1から文字列を取得する
  const word=ss.getRange(1,1).getValue();

}

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

console.log(word);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();

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

}

手順4:文字列をスプレッドシートに二次元配列として取得する配列word2を宣言する

let word2=[];

スプレッドシートは縦×横の二次元ですので、二次元配列として出力する準備を行います。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();
  console.log(word);

  //文字列をスプレッドシートに二次元配列として取得する配列word2を宣言する
  let word2=[];

}

手順5:word2が二次元配列になる様に、wordを追加する

word2.push([word]);

pushメソッドを使って、[ ]の中にwordを入れて二次元配列にしています。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();
  console.log(word);


  let word2=[];

  //word2が二次元配列になる様に、pushメソッドを使ってwordを追加する
  word2.push([word]);

}

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

console.log(word2);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();
  console.log(word);


  let word2=[];
  word2.push([word]);

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

}

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

ss.getRange(3,1).setValue(word2);

黄色いセルはセルA3ですので、3行目1列目で(3,1)と表記します。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();
  console.log(word);


  let word2=[];
  word2.push([word]);
  console.log(word2);

  //スプレッドシートの黄色いセルに出力する
  ss.getRange(3,1).setValue(word2);

}

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


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

ここは本当に、東京23区ですか??と驚く様な、世田谷区の等々力渓谷で水と森林にたっぷりと癒されました。

次の問題へ→

■ 関連記事 ■

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

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

【paiza レベルアップ問題集】 「STEINS;GATE FINAL 正則表現のエントリーポイント」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、

・Pythonの標準入力で文字列を取得する方法

・GASでは二次元配列として文字列を取得する方法

・Python・GASで文字列を連結して出力する方法

についての概要が掴めます。

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

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

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

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

正則表現のエントリーポイント (paizaランク D 相当)

問題:
あなたはプログラミングの課題を解いています。
2 つの単語が改行区切りで入力されるので「;」区切りで出力してください。

この記事では、下記の入力例1の場合を例にして、標準入力で2つの単語を取得して「;」を用いて文字列の連結をして出力します。

入力例1
STEINS
GATE

出力例1
STEINS;GATE

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

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

手順として、

1:標準入力で最初の単語a(今回はSTEINS)を読み込む

2:標準入力で最初の単語b (GATE)を読み込む


3:「;」を使って2つの文字列を連結して出力する

で、行います。

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

コードはこちらになります。

#標準入力で最初の文字と次の文字を読み込む
a=input()
b=input()

#「;」を用いて文字を連結して出力する
print(a+';'+b)

Pythonでの解き方は以上になります。


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

スプレッドシートの緑のセルに最初の文字「STEINS」を入力しました。
スプレッドシートの灰色のセルに次の文字「GATE」を入力しました。

上記のセル2つはarrayという二次元配列として一度に取得します。そうすることによって、SpreadSheetAppから階層を辿って現在のシートにアクセスするという手間を減らすことが出来ます。

黄色いセルには、二次元配列arrayから2つの文字列を取得し「;」で連結した文字列を出力します。

※スプレッドシートに表示するには、二次元配列に文字列を追加をしております※

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

1:スプレッドシートからアクティブシートにアクセスする

2:スプレッドシートの緑のセルに入力された「STEINS」と、灰色のセルに入力された「GATE」の部分を二次元配列arrayとして取得する


3:二次元配列arrayが無事取得出来たことをログで出力して確認する

4:二次元配列array[0][0]とarray[1][0]を「;」も用いて連結して定数strに代入する

5:文字列の連結が出来たことをstrをログ出力して確認する

6:スプレッドシートに二次元配列として取得する配列str2を宣言する

7:str2が二次元配列になるようにstrを追加する

8:str2をスプレッドシートに出力する前にログ出力して確認する

9:スプレッドシートの黄色い所に二次元配列str2を出力する

少々長くなってしまって恐縮ですが、それでは手順ごとにコードを掲載致します。

手順1: スプレッドシートからアクティブシートにアクセスする

const ss=SpreadsheetApp.getActiveSheet();

function steinsGate() {

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

関数steinsGateの中に、まずはSpreadsheetAppから階層を辿ってアクティブシートにアクセスして定数ssに代入しています。

手順2:2つの文字列を二次元配列として取得

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

セルA1から2行分1列分の二次元配列として取得しています。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();

  //2つの文字列を二次元配列として取得
  const array=ss.getRange(1,1,2).getValues();

}

手順3:取得した二次元配列をログ出力で確認する
2行1列の二次元配列として取得出来たことをログで出力して確認します。

console.log(array);

function steinsGate() {

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

  //取得した二次元配列をログ出力で確認する
  console.log(array);

}

手順4:文字列を連結させる

const str=array[0][0]+”;”+array[1][0];

文字列は二次元配列で、最初の行の0番目のarray[0][0]と、次の行の0番目のarray[1][0]を「;」で文字列を連結させて定数strに代入しています。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  //文字列を連結させる
  const str=array[0][0]+";"+array[1][0];
}

手順5:文字列の連結をログ出力で確認する

console.log(str);

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  const str=array[0][0]+";"+array[1][0];
  
  //文字列の連結をログ出力で確認する
  console.log(str);

}

手順6:連結させた文字列を二次元配列として格納させる配列str2を宣言

let str2=[];

スプレッドシートは縦横の二次元配列なので、それに対応した、新たに出力用の配列を作成します。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  const str=array[0][0]+";"+array[1][0];
  console.log(str);

  //連結させた文字列を二次元配列として格納させる配列str2を宣言
  let str2=[];
 
}

手順7:str2が二次元配列になる様に、strを追加する

str2.push([str]);

配列に追加するpushメソッドを使う際、[str]を入れることで二次元配列にしてスプレッドシートに出力出来る準備をするので、[ ]を必ず入力します。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  const str=array[0][0]+";"+array[1][0];
  console.log(str);

  let str2=[];

  //str2が二次元配列になる様に、strを追加する
  str2.push([str]);

}

手順7:スプレッドシートに出力する前に確認する

console.log(str2);

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  const str=array[0][0]+";"+array[1][0];
  console.log(str);

  let str2=[];
  str2.push([str]);

  //スプレッドシートに出力する前に確認する
  console.log(str2);

}

二次元配列になっていますね。
これでスプレッドシートに出力する準備が整いました。

手順8:スプレッドシートの黄色いセルA4に連結した文字列を出力する

ss.getRange(4,1).setValue(str2);

セルA4は4行1列ですので、(4,1)と書き表せます。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  const str=array[0][0]+";"+array[1][0];
  console.log(str);

  let str2=[];
  str2.push([str]);
  console.log(str2);

  //スプレッドシートの黄色いセルに連結した文字列を出力する
  ss.getRange(4,1).setValue(str2);

}

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


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

お台場自由の女神とレインボーブリッジと、レインボーブリッジの右端から1cmの所の東京タワーです。

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

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

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

■ 関連記事 ■

paizaレベルアップ問題集_PythonとGASのコード紹介トップに戻る
初めてのGASに戻る


自己紹介

【paizaレベルアップ問題集】PythonとGAS両方で解いたコード紹介集トップページ

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

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

paizaでは、【スキルチェック】のブログ掲載は禁止されていますが、【レベルアップ問題集】のコードの公開、ユーザ同士で教え合うことや研修の教材に利用することは自由としていると書かれていました。
paizaレベルアップ問題集のリンク

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

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


■ STEINS ;GATE Dランクレベル ■

正則表現のエントリーポイント Python3編


標準入力メニュー その1



■ 標準入力メニュー2 ■

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

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


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


■ 標準入力メニュー3 ■

1 つの入力 Python3編


半角スペース区切りの 2 つの入力 Python3編

半角スペース区切りの 3 つの入力 Python3編

半角スペース区切りの 10 個の入力 Python3編

【半角スペース区切りの入力】半角スペース区切りの 1,000 個の入力 Python3編


■ 標準入力メニュー4 ■

1 行の整数の入力 Python3編

2 行の整数の入力 Python3編

5 行の整数の入力 Python3編

100 行の整数の入力 Python3編

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


■ 標準入力メニュー5 ■

1 つの整数の入力 Python3編


2 つの整数の半角スペース区切りの入力 Python3編

5 つの整数の半角スペース区切りの入力 Python3編

10 個の整数の半角スペース区切りの入力 Python3編

【整数の半角スペース区切りの入力】1,000個の整数の半角スペース区切りの入力 Python3編


■ 標準入力メニュー6 ■

改行区切りでの N 個の整数の入力 Python3編

2 行目で与えられる N 個の整数の入力 Python3編

1 行目で与えられる N 個の整数の入力 Python3編

2 行目で与えられる N 個の整数の入力 (large) Python3編

【N 個の整数の入力】1 行目で与えられる N 個の整数の入力 (large) Python3編


■ 標準入力メニュー7 ■

改行区切りでの N 個の文字列の入力 Python3編

2 行目で与えられる N 個の文字列の入力 Python3編

1 行目で与えられる N 個の文字列の入力 Python3編


■ ループメニュー 1の1 ■

ある数字までの出力 1 Python3編

ある数字までの出力 2 Python3編

数字の受け取り 1 Python3編

数字の受け取り 2 Python3編

ある数をある回数表示 1 Python3編

ある数をある回数表示 2 Python3編

FINAL問題 a ~ z までを表示


■ループメニュー1の2 ■

数列の和 Python3編

数列の A 番目から B 番目までの和

数列の値を全部 * 2 して出力 Python3編

FINAL問題 数列同士の引き算 Python3編


■ ループメニュー1の3 ■

数列の反転 Python3編

九九の表示 1 Python3編

九九の表示 2 Python3編

2 の累乗を表示 Python3編

FizzBuzz Python3編


■ ループメニュー1の4 ■ 

数列の最大値 Python3編

数列の最小値 Python3編

数列の何番目にある? Python3編

数列の中に何個ある? Python3編


■ ループメニュー2の1 ■

未知数個の数の受け取り Python3編

未知数個の文字列の受け取り Python3編

奇数だけ出力 Python3編


割り切れる数だけ出力 Python3編

偶奇の判定 Python3編


ループメニュー2の2 ■

各桁の和 Python3編

カウント変数を使った計算 Python3編

2 で何回割れる? Python3編

任意の数で何回割れる? Python3編

10 進数から 2 進数に変換 Python3編

10 進数から M 進数に変換 Python3編

N が M ずつ増えたときにいつ K を越える? Python3編

毎日増加するお金 Python3編

階乗の計算 Python3編

階乗の末尾に 0 はいくつ付く? Python3編

加算された数列の最大値 Python3編

加算された数列の最小値 Python3編

1 はどこにある? Python3編

約数の個数 Python3編

約数の列挙 Python3編

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

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

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

■ 関連記事 ■

初めてのGASへ
Python自作サンプル集へ


自己紹介

episode8 GAS【棒グラフ】キャラの身長をグラフ化「HUNTER×HUNTERで覚えるGoogle Apps Script」

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

この記事では、

・キャラの身長を棒グラフにする

についての概要が掴めます。

今回は、「キャラクター名」と「身長」の最も簡単な縦棒グラフを作ります。
この様なシートを用意します。


グラフを作成する名前〜身長までの範囲をセルA1からB5までの5行2列分取得して、定数cellに格納します。

const cell=ss.getRange(1,1,5,2);

グラフを縦棒グラフを作成するに当たって、

var chart = sheet.newChart()

の後に

・グラフの種類…縦棒はasColumnChart()

・グラフにしたい範囲(定数cell)

・グラフの配置をセルA7から10行10列分にする

・グラフの高さと幅を指定する

・buildでグラフを作成

・insertChartでグラフをシートに組み込む

と設定します。

グラフの位置をセルA7から縦横に10ドット下と右に移動した位置に配置し、高さ300、幅400の大きさのグラフに指定します。

下記がそのコードになります。

//アクティブなスプレッドシートを選択するグローバル領域(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//身長の縦棒グラフを作成する
function hightChart(){

  const cell=ss.getRange(1,1,5,2);
  let chart =ss.newChart()
    .asColumnChart()
    .addRange(cell)
    .setPosition(7,1,10,10)
    .setOption('height',300)
    .setOption('width',400)
    .build();
  ss.insertChart(chart);
};

このコードを実行すると、キャラクターと身長のシンプルな縦棒グラフが出来上がりました。


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

みなとみらいのクルーズ船です。

←episode7

←GAS自作サンプル集へ戻る

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

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

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

HUNTER×HUNTERのGAS自作サンプル集のページに戻る
初めてのGASに戻る


自己紹介

episode7 GAS【平均・カウント・昇順と降順の並び替え】キャラ身長で演算「HUNTER×HUNTERで覚えるGoogle Apps Script」

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

この記事では、

・キャラクターの身長の平均

・身長170cm以上のキャラクターの人数をカウント


・カスタム数値形式で身長のcmや人数の人を表示する方法

・念系統を昇順、身長を降順で並び替え

・演算結果と並び替えのクリア

についての概要が掴めます。

今回はキャラの平均身長を求めるAVERAGE関数と、身長170cm以上という条件に該当する人数を数えるCOUNTIF関数を使いますので、Excelの関数に慣れている方でしたら馴染みやすいかもしれません。

それでは早速コードを書いて行きたいと思います。


まず、この様な簡易的なスプレッドシートを用意します。

ボタンの作り方とスクリプトの登録方法につきましては、episode2の記事 をご参照下さいませ。

最初に、キャラクターの身長を求めてセルG2(2,7)に入力するコードを書いて行きます。

//アクティブなスプレッドシートを選択するグローバル領域(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//身長の平均を求める
function hightcm(){
  ss.getRange(2,7).setFormula('=AVERAGE(D1:D5)');
}

このスクリプト名の「hightcm」をコピーして、オレンジのボタンの右端の3点リーダーから「スクリプトを割り当て」を選んで登録します。

ボタンを押すとこの様に実行されました。

単位の「cm」は、メニューの「表示形式」→「123数字」→「カスタム数値形式」のダイアログボックスにこの様に入力します。cmはダブルクォーテーションで囲っています。


次に、身長170cm以上のキャラクターの人数を求めてセルG6(6,7)に入力するスクリプトを掲載致します。
先ほどのコードの下にこの様に付け加えます。

COUNTIF関数を用いております。

//身長170cm以上の人数を求める
function cm170over(){
  ss.getRange(6,7).setFormula('=COUNTIF(D1:D5,">=170")');
}

緑のボタンに「cm170over」を登録して実行致します。

この様に求まりました。

人数の単位の「人」は、先ほどのカスタム数値形式で「0人」とそのままダブルクォーテーションを付けずに指定します。


次に並び替えを行います。

・念を昇順
・念が同じ場合は身長の降順

になる様に動作するスクリプトを掲載致します。
念は3列目、身長は4列目になっております。

並び替えをするのに、sortメソッド、ascendingがtrueで昇順、falseで降順(背の高い順)を使用しております。

また、下にこのコードを追記します。

//念を昇順、身長を降順で並び替え
function sortNenHight(){

  //並び替えの範囲と並べ替え種類の指定
  ss.getRange(1,1,5,4).sort([
    {column: 3,ascending: true},
    {column: 4,ascending: false},
  ])

}

ピンクのボタンに「sortNenHight」を割り当ててボタンを押します。

実行結果です。
同じ変化系のヒソカとキルアでは、身長が高い方が上になっております。


最後に、並び替えを戻して計算結果を消去するスクリプトを掲載します。
順番を元に戻す処理も考えて、A列に予め番号を割り振っておきましたので、A列である「column: 1」を「ascending: true」で昇順にします。

//計算結果のクリアと順番を元に戻す(キャラクター順)
function sortClear(){

  //並び替えの範囲と並べ替え種類の指定
  ss.getRange(1,1,5,4).sort([
    {column: 1,ascending: true}
  ])

  //計算結果のクリア
  ss.getRange(2,7).clear();
  ss.getRange(6,7).clear();

}

このスクリプト「sortClear」を灰色のボタンに割り当てて実行します。

元の順番に戻って、計算結果もクリア出来ました。
ここまでのコードをまとめます。

//アクティブなスプレッドシートを選択するグローバル領域(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//身長の平均を求める
function hightcm(){
  ss.getRange(2,7).setFormula('=AVERAGE(D1:D5)');
}


//身長170cm以上の人数を求める
function cm170over(){
  ss.getRange(6,7).setFormula('=COUNTIF(D1:D5,">=170")');
}



//念を昇順、身長を降順で並び替え
function sortNenHight(){

  //並び替えの範囲と並べ替え種類の指定
  ss.getRange(1,1,5,4).sort([
    {column: 3,ascending: true},
    {column: 4,ascending: false},
  ])

}


//計算結果のクリアと順番を元に戻す(キャラクター順)
function sortClear(){

  //並び替えの範囲と並べ替え種類の指定
  ss.getRange(1,1,5,4).sort([
    {column: 1,ascending: true}
  ])

  //計算結果のクリア
  ss.getRange(2,7).clear();
  ss.getRange(6,7).clear();

}

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

みなとみらいの夜景、コスモクロック21です。

←episode6               episode8(最終回)→

←GAS自作集サンプルへ戻る

HUNTER×HUNTERのGAS自作サンプル集のページに戻る
初めてのGASに戻る


自己紹介

episode6 GAS【指定セル範囲に色付け】「HUNTER×HUNTERで覚えるGoogle Apps Script」

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

この記事では、

・色を付けたい範囲の指定方法

・文字の色とセルの塗り潰しの色を指定

・色の英語名と16進数を使用

についての概要を掴めます。


今回は、この表に色を付けます。
完成形のイメージは、この様な厨二病っぽい感じにしたいと思います。

各キャラクターの名前(列A)と念系統(列B)を黒背景に白文字に、
ヒソカチェックの列(列C)は、紫にします。

列ABの4行2列分の範囲をcharaNenと定義します。

//A列B列の名前と念系統が入っているセル範囲をcharaNenと定義
const charaNen=ss.getRange(1,1,4,2);

背景色を黒にしています。
色は英語名で指定出来ます。

charaNen.setBackground('black');

文字の色を白にしています。

charaNen.setFontColor('white');

列Cの4行1列分の範囲をhisokaCheckという名前にします。
1列分の場合は、列は略せますので、(1,3,4)として、(1,3)でセルC1,4で4行を取得しております。

//C列のヒソカチェックのセル範囲をhisokaCheckと定義
const hisokaCheck=ss.getRange(1,3,4);

色は英語名の他に、16進数で更に細かく指定出来ます。
ヒソカチェックの所は16進数で色を指定するので、ここで、16進数を用いての色の表し方について触れさせて頂きます。

・白… ffffff

・黒…000000

・最初の2桁が赤、次が緑、最後が青

以上より薄紫を[#eeddee]で表しました。
このコードでは、赤と青を強めにしていて、薄い紫になります。

cellHISOKA.setBackground('#eeddee');

参考までに色見本です。

ここまでのコードです。

//アクティブなスプレッドシートを選択するグローバル領域(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//セルの背景とフォントを変える
function rookieColor() {

  //A列のキャラ名とB列の念の入っている範囲をcharaNenとする
  const charaNen=ss.getRange(1,1,4,2);

  //背景色を黒にする
  charaNen.setBackground('black');

  //文字色を白にする
  charaNen.setFontColor('white');

  //C列のヒソカチェックの範囲をhisokaCheckとする
  const hisokaCheck=ss.getRange(1,3,4);

  //背景を薄紫にする
  hisokaCheck.setBackground('#eeddee');

}

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

横浜ランドマークタワーとクルーズ船のみなとみらいの夜景です。

←episode5               episode7→

←GAS自作集サンプルへ戻る

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

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

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

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

自己紹介

episode5 GAS【指定セル範囲のフォント変更】「HUNTER×HUNTERで覚えるGoogle Apps Script」

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

今回の記事では、

・指定の範囲の文字を太字

・フォントサイズの変更

・最終行のgetLastRow()の復習

についての概要が掴めます。


今回は、この様なシートを用意しました。
この表のA列にある「ゴン〜レオリオ」までのキャラのフォントを変えます。

キャラの名前が掲載されている範囲は、セルA1からA4までになります。
この範囲を太字で12ptにします。

キャラクターの人数をN(人)として、getLastRowで取得します。

const N=ss.getLastRow();

範囲に「cellROOKIE(ルーキー)」と名前を付けて、大きさを変える範囲を確保します。

let cellROOKIE=ss.getRange(1,1,N);

(1,1,N)は、セルA1(1,1)からN行分の範囲という意味です。
これで、キャラクターが増えても対応可能です。

この範囲にフォントの大きさを12ptで太字にする設定を下記のコードに施します。

cellROOKIE.setFontSize(12).setFontWeight(‘bold’);

ここまでのコードです。

//アクティブなスプレッドシートを選択するグローバル領域(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//行数(人数)を取得する
const N=ss.getLastRow();

//キャラクターの名前を12ptの太字にする
function bold12pt(){

  let cellROOKIE=ss.getRange(1,1,N);
  cellROOKIE.setFontSize(12).setFontWeight('bold');
  
}

ここでボタンに関数「bold12pt」をスクリプトを割り当てで割り当てます。
実行すると、

この様に、キャラクターの名前がフォント12の太字になりました。



5行目の

const N=ss.getLastRow();

で、最終行を取得しているので、キャラクターの名前が増えても対応可能です。
この様に少し増やしてみます。

「新人潰しのトンパさん〜アモリ三兄弟」まで追加しました。
再度実行してみます。

これで全員の名前が太字になりました。

←episode4               episode6→

←GAS自作サンプル集へ戻る

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

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

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

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

横浜みなとみらいの夜景です。
コスモクロック21と、ヨコハマ グランド インターコンチネンタル ホテルです。

HUNTER×HUNTERのGAS自作サンプル集のページに戻る
初めてのGASに戻る


自己紹介