paiza レベルアップ問題集 標準入力その5「STEP: 4 10 個の整数の半角スペース区切りの入力」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、Pythonの標準入力で半角スペース区切りの整数をsplitメソッドを使って10個取得し、配列に格納して10行の整数を出力するコードの概要が掴めます。

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

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

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

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


10 個の整数の半角スペース区切りの入力 (paizaランク D 相当)

問題:

整数 a_1, a_2, … , a_9, a_10 が半角スペース区切りで与えられるので、改行区切りにして 10 行で出力してください。

ではまず、Pythonで解いて行きます。


手順として、

1:標準入力でsplitメソッドを使って半角スペース区切りの整数をリストで取得する

2:取得したリストをループで出力する

・シンプルなループ
・リスト出力に適したループ
・上記の内包表記  

の2ステップで行います。

今回は下記の入出力例1を用います。

入力例1
10 9 8 7 6 5 4 3 2 1

出力例1
10
9
8
7
6
5
4
3
2
1

まず、準備として、paiza.ioにこのように入力します。
(入力例1 をコピペしたのみ)

下記のコードで入力と出力を行いますが、1行に複数の関数が使われているので、今回の例に即して簡潔にお伝えします。

input … 標準入力で文字や数値を取得する

split … 指定の区切り文字で分割して取得する

int … 上記で取得する対象が整数である


rstrip … 右側にある不要な空白を取り除く


map … 関数をまとめて適用


list … リスト(配列)変換

上記の関数を用いてコードを掲載致します。
関数が沢山に色々出て来てしまいましたので、まずは、標準入力で取得した数値がリスト(配列)形式でarrayに取得出来たことをprint文で出力して確認します。

#10つの整数を標準入力で取得し右側の不要な空白を削除してリストにする
array=list(map(int,input().rstrip().split(' ')))

#arrayが配列として取得できたことを確認する
print(array)

まずは、リストとして出力出来ました。

では、リストarrayをループを用いて解答の出力例に沿って縦に出力します。

ループを用いる前にリストarrayの長さを調べて、リストは0からarray[0]、array[1] …array[9]になるので後ほどループの回数に使用する、リストarrayの長さが10(0,1,2,3,4,5,6,7,8,9の10つ)になることをlen関数を用いて確認します。

array=list(map(int,input().rstrip().split(' ')))
print(array)

#リストの長さを求める
print(len(array))

このコードで、リストarrayの長さが10であることが確認出来ました。

では、リストarrayをループで出力します。

for i in range(len(array)):

これで、iに0,1,2,3,4,5,6,7,8,9が入ります。
range(数)で、0からその数未満の回数分ループを回します。

array=list(map(int,input().rstrip().split(' ')))
print(array)

print(len(array))

#ループを使ってリストを出力
for i in range(len(array)):
    print(array[i])

リストをループを使って出力した結果の画像です。

必要な分だけ出力するので、コメントアウトを致します。

array=list(map(int,input().rstrip().split(' ')))
#print(array) ←コメントアウト

#print(len(array)) ←コメントアウト

#ループを使ってリストを出力
for i in range(len(array)):
    print(array[i])

すると、解答提出に必要な分だけ出力されました。


リストを使った、更に便利なループの表記方法について掲載致します。

for リストの要素の文字 in リスト名:

今回の例ですと、

for num in array:

になります。
リストの要素の所は自分や他の方が見て分かりやすい「num」などにすると、「整数を取り出すんだな」と伝わりやすいです。

コメントアウトした部分を削除して、コードを掲載致します。

array=list(map(int,input().rstrip().split(' ')))

#リスト出力に便利なループの書き方
for num in array:
    print(num)

更にコード短くするのに、内包表記を用います。

[出力結果のprint文 for リストの要素の文字 in リスト名]

今回の例ですと、

[print(num) for num in array]

と表記いたします。

array=list(map(int,input().rstrip().split(' ')))

#リスト出力に便利なループの書き方の内包表記
[print(num) for num in array]

このコードの実行(出力)結果です。

Pythonは以上です。
次は、GASで解いて行きます。


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

緑色のセルA2の所にpaiza問題の入力例をコピペする際、[Ctrl] + [Shif] + [V] のショートカットキーを使うと書式を崩さずに貼り付けられます。

緑色のセルA2(2,1)に入力した整数を取得して、それをC2(2,3)から始まる10行分の黄色いセルに出力します。

その際、黄色いセルの所には、二次元配列として取得した整数が格納された配列のarray2を出力します。

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

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

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

2:緑のセルA2(2,1)の整数をsplitメソッドを使って配列arrayに格納する


3:配列arrayのログ出力をして数値が配列に格納されたことを確認


4:スプレッドシートに格納する為、空の配列array2に二次元配列として格納する

5:スプレッドシートに格納前に、array2をログ出力する

6:スプレッドシートの黄色いセルC2(2,3)から始まる10行分に出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

Standard Inputで標準入力の意味です。

function standardInput4() {

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

}

手順2:緑のセルA2(2,1)の整数をsplitメソッドを使って配列arrayに格納する

const array=ss.getRange(1,1).getValue().split(‘ ‘);

function standardInput4() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑のセルA2(2,1)の整数をsplitメソッドを使って配列arrayに格納する
  const array=ss.getRange(2,1).getValue().split(' ');

}

手順3:セルA2のスペース区切りの数値が、配列arrayに格納出来たことをログ出力で確認する。

console.log(array);

下記のコードの実行結果です。

手順4:スプレッドシートに出力する為に、空のリストarray2を宣言して、二次元配列として格納する

まず、二次元のスプレッドシートに出力するのに使用する、現在は空の二次元配列array2を宣言します。

function standardInput4() {

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

  //スプレッドシートに出力用の二次元配列にする空の配列を宣言
  const array2=[];

}

この空の配列array2にループを使ってarrayに格納された数値を二次元配列として格納して行きます。

array.lengthで(一次元)配列の長さを求め、配列の添字は0から始まるので、ループの中ではi=0,i=1,i=2 …… i=8,i=9とiの値がインクリメント(増加)するように、iの値が1ず増えて変わっていくので、定数のconstではなく、変数のletを用いています。

また、i<array.lengthとすることで、iの値が0から9まで(10未満)1つずつ増えて行きます。「<」であることに着目をお願い致します。

二次元配列として格納するために、[array[i]]と配列自体を[ ]で括っています。
配列を末尾に追加するのにpushを使っています。

function standardInput4() {

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

  const array2=[];

  //スプレッドシートに格納する為に、array2に二次元配列として格納する
  for(let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
}

手順5:スプレッドシートに出力前に、array2をログ出力して、二次元配列として格納されていることを確認する

console.log(array2);

下記のコードの実行結果のログです。

手順6:スプレッドシートのC2(2,3)から始まる10行分の黄色いセルに配列array2を出力する

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

C3から始まるので(2,3)、10行分なので、(2,3,10)になります。

array2.lengthを使うと、配列の長さの10が行数分の10行として入りますので、(2,3,array2.length)と書くと、より柔軟なコードが書けます。

1列なので、(2,3,array2.length,1)と書くことも出来ますが、1列の場合は省略可能です。

また、出力する数値はsplitで分割して複数になっているので、setValuesと複数形のsが付きます。

function standardInput4() {

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

  const array2=[];

  //スプレッドシートに格納する為に、array2に二次元配列として格納する
  for(let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }

  console.log(array2);

  //スプレッドシートのC2から始まる黄色いセル10行分に出力する
  ss.getRange(2,3,array2.length).setValues(array2);

}


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

GASのコードは以上になります。

※ この記事の作成に参考になったサイトです ※
ありがとうございます。

Python「rstrip() メソッド」で文字列の右端を整えよう!
Python mapの使い方


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

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

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

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

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

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

■ 関連記事 ■

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

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

paiza レベルアップ問題集 標準入力その5「STEP: 3 5 つの整数の半角スペース区切りの入力」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、Pythonの標準入力で5つの整数を取得し、区切り文字からリストを作成して、そのリストをループで出力する方法の概要が掴めます。

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

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

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

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


5 つの整数の半角スペース区切りの入力 (paizaランク D 相当)

問題:

整数 a_1, a_2, a_3, a_4, a_5 が半角スペース区切りで与えられるので、改行区切りにして 5 行で出力してください。

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


手順として、

1:標準入力でsplitメソッドを使って半角スペース区切りの整数をリストで取得する

2:取得したリストをループで出力する

・シンプルなループ
・リスト出力に適したループ
・上記の内包表記  

の2ステップで行います。

今回は下記の入出力例1を用います。

入力例1
2 0 8 1 3

出力例1
2
0
8
1
3

まず、準備として、paiza.ioにこのように入力します。
(入力例1 をコピペしたのみ)

下記のコードで入力と出力を行いますが、1行に複数の関数が使われているので、今回の例に即して簡潔にお伝えします。

input … 標準入力で文字や数値を取得する

split … 指定の区切り文字で分割して取得する

int … 上記で取得する対象が整数である


rstrip … 右側にある不要な空白を取り除く


map … 関数をまとめて適用


list … リスト(配列)変換

上記の関数を用いてコードを掲載致します。
関数が沢山に色々出て来てしまいましたので、まずは、標準入力で取得した数値がリスト(配列)形式でarrayに取得出来たことをprint文で出力して確認します。

#5つの整数を標準入力で取得し右側の不要な空白を削除して分割してリストにする
array=list(map(int,input().rstrip().split(' ')))

#arrayが配列として取得できたことを確認する
print(array)

このコードの出力結果です。

では、リストarrayをループを用いて解答の出力例に沿って縦に出力します。

ループを用いる前にリストarrayの長さを調べて、リストは0からarray[0]、array[1] …array[4]になるので後ほどループの回数に使用する、リストの長さが5(0,1,2,3,4の5つ)になることをlen関数を用いて確認します。

array=list(map(int,input().rstrip().split(' ')))
print(array)

#リストの長さを求める
print(len(array))

こちらのコードでリストarrayの長さが5であることが確認出来ました。

では、ループで出力します。

for i in range(len(array)):

これで、iに0,1,2,3,4が入ります。
range(数)で、0からその数未満の回数分ループを回します。

array=list(map(int,input().rstrip().split(' ')))
print(array)

print(len(array))

#ループを使ってリストを出力
for i in range(len(array)):
    print(array[i])

必要な分だけ出力するので、コメントアウトを致します。

array=list(map(int,input().rstrip().split(' ')))
#print(array) ←コメントアウト

#print(len(array)) ←コメントアウト

#ループを使ってリストを出力
for i in range(len(array)):
    print(array[i])

すると、解答提出に必要な分だけ出力されました。

リストを使った、更に便利なループの表記方法について掲載致します。

for リストの要素の文字 in リスト名:

今回の例ですと、

for num in array:

になります。
リストの要素の所は自分や他の方が見て分かりやすい「num」などにすると、「整数を取り出すんだな」と伝わりやすいです。

コメントアウトした部分を削除して、コードを掲載致します。

array=list(map(int,input().rstrip().split(' ')))

#リスト出力に便利なループの書き方
for num in array:
    print(num)

更にコード短くするのに、内包表記を用います。

[出力結果のprint文 for リストの要素の文字 in リスト名]

今回の例ですと、

[print(num) for num in array]

と表記いたします。

array=list(map(int,input().rstrip().split(' ')))

#リスト出力に便利なループの書き方の内包表記
[print(num) for num in array]

このコードの実行(出力)結果です。

Pythonは以上です。
次は、GASで解いて行きます。


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

緑色のセルB1の所にpaiza問題の入力例をコピペする際、[Ctrl] + [Shif] + [V] のショートカットキーを使うと書式を崩さずに貼り付けられます。

緑色のセルB1(1,2)に入力した整数を取得して、それをB3(3,2)から始まる黄色いセル5行分に出力します。

その際、この黄色いセルの所には、二次元配列として取得した整数が格納された配列を出力します。

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

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

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

2:緑のセルB1(1,2)の整数をsplitメソッドを使って配列arrayに格納する

3:配列arrayのログ出力

4:スプレッドシートに出力する為に、array2に二次元配列として格納する

5:スプレッドシート出力前に、array2をログ出力する

6:スプレッドシートのB3(3,2)から始まる黄色いセル5行分に出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

Standard Inputで標準入力の意味です。

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

}

手順2:緑のセルB1(1,2)の整数をsplitメソッドを使って配列arrayに格納する

const array=ss.getRange(1,2).getValue().split(‘ ‘);

splitメソッドで、セルB1の値を区切って取得して配列arrayに格納しております。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();

  //緑のセルB1(1,2)の整数をsplitメソッドを使って配列arrayに格納する
  const array=ss.getRange(1,2).getValue().split(' ');

}

手順3:配列arrayに5つ分の数値が配列として出力出来たことをログ出力で確認

console.log(array);

下記のコードと実行結果です。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,2).getValue().split(' ');

  //配列arrayが5つの数値のリストとして取得出来たことをログ出力で確認
  console.log(array);

}

手順4:スプレッドシートに出力する準備で、array2を宣言して二次元配列として格納する

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,2).getValue().split(' ');
  console.log(array);

  //スプレッドシートに格納する為に、array2に二次元配列として格納する
  const array2=[];

}

では、上のコードで宣言したarray2に二次元配列として配列arrayの5つの数値を格納するコードを掲載します。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,2).getValue().split(' ');
  console.log(array);

  const array2=[];

  //ループを用いて空の配列array2にarrayを二次元配列として追加する
  for(let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }

  //スプレッドシート格納前にarray2が二次元配列になっていることをログで確認する
  console.log(array2);

}

実行結果のログで、array2が二次元配列になっていることが確認出来ました。

ループの部分ですが、配列の添字が0から始まるので、array[0]、array[1] … array[4]と取得するため、i<array.lenghと「<」で配列の長さ未満の演算子を使っています。

また、[array[i]]とすることで、配列に要素を追加するpushで二次元配列として追加しています。

手順5:スプレッドシートに格納前に、array2をログ出力する

console.log(array2);

手順6:スプレッドシートのB3(3,2)から始まる黄色いセル5行分に出力する

ss.getRange(3,2,5).setValues(array2);

セルB3が(3,2)で5行分ですので、(3,2,5)と行数を指定しています。
また、列数の1列も指定すると(3,2,5,1)になりますが、こちらは省略可能です。

function standardInput3() {
  
  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から5行分に出力する
  ss.getRange(3,2,5).setValues(array2);

}

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

GASは以上です。

※ この記事の作成に参考になったサイトです ※
ありがとうございます。

Python「rstrip() メソッド」で文字列の右端を整えよう!
Python mapの使い方


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

羽田空港の飛行機と空港夜景です。

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

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

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

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

■ 関連記事 ■

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

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

paiza レベルアップ問題集 標準入力その5「STEP: 2 2 つの整数の半角スペース区切りの入力」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、Pythonで標準入力でsplitメソッドを使って、半角スペース区切りの整数を2つ取得し、2行の整数を出力する方法が学べます。

GASではスプレッドシートで値を取得して出力しています。

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

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

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

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


2 つの整数の半角スペース区切りの入力 (paizaランク D 相当)

問題:
整数 a, b が半角スペース区切りで与えられるので、改行区切りにして 2 行で出力してください。

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


手順として、

1:標準入力でsplitメソッドを使って半角スペース区切りの整数を取得する

2:取得した整数a,bを出力する

の2ステップで行います。

今回は下記の入出力例2を用います。

入力例2
1234 5678

出力例2
1234
5678

まず、準備として、paiza.ioにこのように入力します。
(入力例2 をコピペしたのみ)

下記のコードで標準入力とprint文での出力を行います。

map… 一括変換
int … 整数を標準入力で取得する際に用いる
input … 標準入力で取得
split … 指定した文字で区切る

これを1行で書いて、aとbにそれぞれ代入しています。

#標準入力で取得した値を数値と区切りに一括で変換してaとbそれぞれに代入
a,b=map(int,input().split(' '))

#代入した数値それぞれを出力
print(a)
print(b)

このコードの実行(出力)結果です。

Pythonは以上です。

次は、GASで解いて行きます。


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

paizaの問題から例2をコピーして、スプレッドシートの緑のセルB1(1,2)に貼り付ける際、[Ctrl] + [Shift] + [V] のショートカットを使うと書式が崩れないでコピペ出来ます。

それでは、緑色のセルに入力した整数を取得して、それを黄色いセルに出力します。

その際、この黄色いセルB3(3,2)〜B4(4,2)の所には、二次元配列として取得した整数が格納された配列を出力します。

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

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

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

2:緑のセルB1(1,2)の整数をsplitメソッドを使って配列arrayに格納する

3:配列arrayのログ出力

4:スプレッドシートに出力する為に、二次元配列としてarray2(空の配列)を使用するので、その宣言をする

5:ループを使って一次元配列arrayを二次元配列array2に追加する

6:スプレッドシート出力前に、array2が二次元配列になっていることをログで確認する

7:スプレッドシートの黄色いセルB3(3,2)〜B4(4,2)に格納する

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

const ss = SpreadsheetApp.getActiveSheet();

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

コードを関数「standardInput2」に書いて行きます。

Standard Inputで標準入力の意味です。

function standardInput2() {

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

手順2:緑のセルB1(1,2)の整数をsplitメソッドを使って配列arrayに格納する

const array=ss.getRange(1,2).getValue().split(‘ ‘);

function standardInput2() {
  
  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルB1(1,2)の整数をsplitメソッドを使って配列arrayに格納する
  const array=ss.getRange(1,2).getValue().split(' ');
  
}

手順3:配列arrayのログ出力

console.log(array);

コードと出力結果です。
結果の画像から1次元配列であることが確認出来ます。

function standardInput2() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,2).getValue().split(' ');

  //配列arrayのログ出力
  console.log(array);
  
}

手順4:スプレッドシートに出力する為に、二次元配列としてarray2(空の配列)を使用するので、その宣言をする

const array2=[];

function standardInput2() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,2).getValue().split(' ');

  console.log(array);

  //スプレッドシートに出力する為に、数値をarray2に二次元配列として格納する
  //空の二次元配列array2を宣言する
  const array2=[];

}

手順5:ループを使って一次元配列arrayを二次元配列array2に追加する

for(i=0; i<array.length; i++)

一次元配列arrayの添字0から、この配列の長さが2(array.lengthは2になります)
の1つ前までをループを使って二次元配列に追加して行きます。
i<arrayであり、「<」となっていて「<=」では無い所がポイントです。

array.lengthの長さ未満(配列の長さから1を引く)を指定することによって、ループ内ではiが添字0と添字1が該当します
array[i]がarray[0] 〜 array[1]の2つまでループ内で扱います。

array2.push(array[i]);

配列の添字は0から始まるので、array[0]である「1234」とarray[1]である「5678」をループで追加します。

[array[i]]と、array[i]自体を[ ]で括っていることで、二次元配列として追加しています。

また、iの前でletを用いていることにより、iは定数ではなく変数として、ループの中で値を0,1と変えられます。

function standardInput2() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,2).getValue().split(' ');

  console.log(array);

  //スプレッドシートに出力する為に、数値をarray2に二次元配列として格納する
  
  const array2=[];

  //ループでarrayに格納された数値を二次元配列に追加する
  for(let i=0;i<array.length;i++){
    array2.push([array[i]]);
  } 
}

手順6:スプレッドシート出力前に、array2が二次元配列になっていることをログ出力で確認する

console.log(array2);

コードと実行結果です。
これでarray2は無事に二次元配列になりました。

function standardInput2() {
  
  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〜B4の(3,2)から2行分出力する

ss.getRange(3,2,2).setValues(array2);

セルB3(3,2)から2行分なので(3,2,2)となります。
1列分も含めると(3,2,2,1)になりますが、この1列分は省略可能です。

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

function standardInput2() {
  
  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〜B4にB3(3,2)から2行分出力する
  ss.getRange(3,2,2).setValues(array2);

}

GASは以上です。


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

スカイツリーと河津桜(夜桜でライティングは紫の雅(みやび))です。

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

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

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

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

■ 関連記事 ■

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

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

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

この記事を読むことで、Pythonで標準入力を使って1行の整数を取得する方法が学べます。

取得する対象が整数ですので、intの中にinputを用います。
GASではスプレッドシートで値を取得して出力しています。

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

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

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

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


1 つの整数の入力 (paizaランク D 相当)

問題:
整数 a が与えられるので a を出力してください。

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


手順として、

1:標準入力で整数を取得する

2:取得した整数を出力する

の2ステップで行います。

今回は下記の入出力例1を用います。

入力例1
813

出力例1
813

まず、準備として、paiza.ioにこのように入力します。
(入力例1をコピペしたのみ)

下記のコードで入力と出力を行います。
コメントに書いてある通り、整数を標準入力で取得したい時はintの中にinputを入れたコードを書きます。

#整数を標準入力で取得する為、intとinputを使用する
a=int(input())
print(a)

このコードの実行(出力)結果です。

Pythonは以上です。

次は、GASで解いて行きます。


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

緑色のセルB1(1,2)に入力した整数を取得して、それを黄色いセルB3(3,2)に出力します。

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

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

2:緑色のセルB1(1,2)の整数を取得してaに格納


3:スプレッドシートの出力前にaを取得できたことをログ出力で確認する


4:スプレッドシートの黄色いセルB3(3,2)にaを出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

Standard Inputで標準入力の意味です。

function standardInput1() {

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

}

手順2:緑色のセルB1(1,2)の整数を取得してaに格納

const a=ss.getRange(1,2).getValue();

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルB1(1,2)の整数を取得してaに格納
  const a=ss.getRange(1,2).getValue();

}

手順3:スプレッドシートの出力前にaを取得できたことをログ出力で確認する

console.log(a);

コードと実行結果です。

function standardInput1() {

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

  //スプレッドシートの出力前にaを取得できたことをログ出力で確認する
  console.log(a);

}

手順4:スプレッドシートの黄色いセルB3(3,2)にaを出力する

ss.getRange(3,2).setValue(a);

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

function standardInput1() {

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

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

}

GASは以上です。


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

遊歩道の桜です。

標準入力その4へ           次の問題へ→

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

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

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

■ 関連記事 ■

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

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

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

この記事を読むことで、Pythonで標準入力を使って、ループを用いて1000行の整数を取得する方法が学べます。

GASではスプレッドシートで値を取得して出力しています。

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

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

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

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


【整数の行入力】1,000行の整数の入力 (paizaランク D 相当)

問題:
整数 a_1, a_2, … , a_999, a_1000 が 1,000 行で与えられるので a_1, a_2, … , a_999, a_1000 を 1,000 行で出力してください。

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


手順として、

1:ループを使って標準入力で整数を取得し出力する

の1ステップで行います。

今回は下記の入出力例1を用います。

<入力例1>
1189
8004
7243
5507
3237
(省略)


<出力例1>
1189
8004
7243
5507
3237
(省略)


まず、準備として、paiza.ioにこのように入力します。
(入力例1をコピペしたのみ)

1000個の数字と長いので、最初と最後の5件のみの画像を掲載致します。

<最初の5行>

<最後の5行>

それでは、下記のコードで入出力を行います。
ループを1000回まわして、その中で標準入力で変数tempに代入して、tempを出力しています。

intをinputで囲っているのは、取り出す対象が「整数」だからです。

#ループ内で標準入力を使って1000行の整数を取得し出力する
for i in range(1000):
    temp=int(input())
    print(temp)

このコードの実行(出力)結果です。

<最初の5行>

<最後の5行>

Pythonは以上です。


次は、GASで解いて行きます。

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

データを貼り付ける時、paizaの問題集の入力例1をコピーしてから、[Ctrl] + [Shift] + [V] のショートカットキーを使うと書式が保たれて貼り付けられます。

また、後ほどスクロールするので、1行目を固定してあります。
行番号を選択すると行全体が選択されるので、その状態で「表示」→「固定」→「行1まで」で固定出来ます。

<最初の5行>

<最後の5行>

緑色の列のセルA2(2,1)から始まる1000行分の所に入力した整数を取得して、それを黄色いセルC2(2,3)から始まる1000行分の所に出力します。

その際、この黄色く塗りつぶした列の所に、二次元配列として取得した整数が格納された配列を出力します。

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

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

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

2:緑色のセルA2(2,1)から始まる1000行分の列の整数を取得して1000行の整数を二次元配列numに格納

3:スプレッドシートの出力前に1000行の整数が格納された二次元配列numを取得できたことをログ出力で確認する

4:スプレッドシートの黄色いC2(2,3)から始まる1000行分の列の所に二次元配列numを出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

Standard Inputで標準入力の意味です。

function standardInput5() {

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

}

手順2:緑色のセルの列の整数を取得して100個の整数を二次元配列numに格納

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

緑色のセルA2(2,1)から1000行分のデータを取得することを意味しています。
1列ですので、(2,1,1000)で(2,1,1000,1)と最後の1は省略出来ますが、同様の結果を得られます。

function standardInput5() {
  
  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルの列の整数を取得して1000行の整数を二次元配列numに格納
  const num=ss.getRange(2,1,1000).getValues();

}

手順3:スプレッドシートの出力前に100個の整数が格納された二次元配列numを取得できたことをログ出力で確認する

console.log(num);

コードとログ出力結果です。

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

  //スプレッドシートの出力前に1000行の整数が格納された二次元配列numを取得できたことをログ出力で確認する
  console.log(num);

}

1000行と長いので、最初の一部分のみのログ画像です。

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

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

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

function standardInput5() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,1000).getValues();
  console.log(num);

  //スプレッドシートの黄色い列の所に二次元配列numを出力する
  ss.getRange(2,3,1000).setValues(num);

}

<最初の5行>

<最後の5行>

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


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

石神井公園の池のサイクルボートから撮影した桜です。

←前の問題へ          標準入力その5へ

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

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

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

■ 関連記事 ■

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

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

paiza レベルアップ問題集 標準入力その4「STEP: 4 100 行の整数の入力」をPythonとGASで解いたコードの紹介

この記事を読むことで、Pythonでループを用いてループの中で標準入力を使って、100個の整数を取得する方法が学べます。

GASではスプレッドシートで値を取得して出力しています。

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

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

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

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


100 行の整数の入力 (paizaランク D 相当)

問題:
整数 a_1, a_2, … , a_99, a_100 が 100 行で与えられるので a_1, a_2, … , a_99, a_100 を 100 行で出力してください。

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

手順として、

1:ループを使って標準入力で整数を取得し出力する

の1ステップで行います。

今回は下記の入出力例1を用います。

入力例1
4090
4199
9064
6517
9620



(省略)



7940
452
7535
9976
4574

出力例1
4090
4199
9064
6517
9620



(省略)



7940
452
7535
9976
4574

まず、準備として、paiza.ioにこのように入力します。
(入力例1をコピペしたのみ)

100個の整数を全て表示するのは大変なので、最初の5つと最後の5つの画像です。

<最初の5つの整数

<最後の5つの整数>

このコードでループを用いた標準入力の入出力を行います。
ループを100回まわして、その中で標準入力で変数tempに代入して、tempを出力しています。

整数を標準入力で取り込んでいるので、intの中にinputを入れています。

#標準入力で100行取り込んで出力する
for i in range(100):
    temp=int(input())
    print(temp)

このコードの実行(出力)結果です。

<前半5つの整数>

<後半5つの整数>

Pythonは以上です。

次は、GASで解いて行きます。


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

問題集の入力例1をコピーしてからショートカットキーで、緑のセルA2(2,1)から始まる所に [ Ctrl ] + [ Shift ] + [ V ]と貼り付けると色が変わらないで貼り付けられます。

<数値前半5つ>

1行目で固定してスクロールの対策をしております。
行の「1」の所を選択すると行全体が選択されるので、その状態で 表示 → 固定 → 行1まで と行の表示の固定で固定してあるので、スクロールしてもタイトルの入力、出力は表示されます。

<数値後半5つ>

緑色の列の所に入力した整数、セルA2(2,1)から始まる100行分の整数を取得して、それを黄色いセルC2 (2,3)から始まる100行分に出力します。

その際この黄色いセルに、二次元配列として取得した整数が格納された配列を出力します。

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

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

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

2:緑色のセルB1(2,1)から始まる列の整数を取得して、100個の整数を二次元配列numに格納

3:スプレッドシートの出力前に100個の整数が格納された二次元配列numを取得できたことをログ出力で確認する

4:スプレッドシートの黄色い列C2(2,3)の所から100行分に二次元配列numを出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

Standard Inputで標準入力の意味です。

function standardInput4() {

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

}

手順2:緑色のセルA2(2,1)から始まる列の整数を取得して100個の整数を二次元配列numに格納する

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

function standardInput4() {

  const ss = SpreadsheetApp.getActiveSheet();

  //緑色のセルA2(2,1)から始まるの列の整数100個を取得して整数を二次元配列numに格納
  const num = ss.getRange(2,1,100).getValues();

}

ss.getRange(2,1,100)ですが、(2,1)がセルA2です。
そこから100行分ですので、その後のカンマの後の数字は100行の100です。
1列分の1は省略可能ですが、ss.getRange(2,1,100,1)と書いても動作します。

手順3:スプレッドシートの出力前に100個の整数が格納された二次元配列numを取得できたことをログ出力で確認する

console.log(num);

コードと実行結果です。ログの画像は数値の最初の方の一部です。
(ログでは配列が長くて100個確認が出来なかった為。)

function standardInput4() {

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

  //スプレッドシートの出力前に100個の整数が格納された二次元配列numを取得できたことをログ出力で確認する
  console.log(num);

}

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

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

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

function standardInput4() {

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

  //スプレッドシートの黄色い列C2(2,3)から100行分の所に二次元配列numを出力する
  ss.getRange(2,3,100).setValues(num);

}

<出力した数値の前半5つ>

<出力した数値の後半5つ>

GASは以上になります。


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

遊歩道の桜です。
歩きながら、青空と桜に元気を貰いました。

勉強で疲れた時に見て下さると嬉しいです。

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

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

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

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

■ 関連記事 ■

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

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

paiza レベルアップ問題集 標準入力その4「STEP: 3 5 行の整数の入力」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、Pythonで標準入力を使って、ループを用いて5つの整数を取得する方法が学べます。

GASではスプレッドシートで値を取得して出力しています。

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

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

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

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



5 行の整数の入力 (paizaランク D 相当)

問題:整数 a_1, a_2, a_3, a_4, a_5 が 5 行で与えられるので a_1, a_2, a_3, a_4, a_5 を 5 行で出力してください。

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


手順として、

1:ループを使って標準入力で整数を取得し出力する

の1ステップで行います。

今回は下記の入出力の「例2」を用います。

入力例2
1111
3333
5555
7777
9999

出力例2
1111
3333
5555
7777
9999

まず、準備として、paiza.ioにこのように入力します。
(入力例2をコピペしたのみ)

下記のコードでは、変数tempに標準入力を用いて数値を入れてからprint文で出力する動作をループで5回繰り返しています。

その際、数値ですのでintの中にinputを使っています。

#ループを使って標準入力で整数を取得し出力する
for i in range(5):
    temp=int(input())
    print(temp)

コードと実行結果です。

Pythonは以上です。


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

緑色のセルA2(2,1)から始まる5行1列に入力した整数を取得して、それを黄色いセルC2(2,3)から始まる5行1列に出力します。

その際、この黄色いセルの所に、二次元配列として取得した整数が格納された配列を出力します。

行数と列数が必ず一致する必要があります。
そうしないとエラーが出ますので、これは体感的に習得するのが早いと思います。

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

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

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

2:緑色のセルA2(2,1)から5行1列分の整数を取得して、5つの整数を二次元配列numに格納

3:スプレッドシートの出力前に5つの整数が格納された二次元配列numを取得できたことをログ出力で確認する

4:スプレッドシートの黄色いセルC2(2,3)から始まる5行1列分に二次元配列numを出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

Standard Inputで標準入力の意味です。

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

function standardInput2() {

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

手順2:緑色のセルA2(2,1)から始まる5つの整数を取得して、これらの整数を二次元配列numに格納

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

セルA2は(2,1)で、その後の「5」は5行分です。

1列分の列数も加えて(2,1,5,1)と指定しても数値を取得出来ますが、1列の場合は省略が可能です。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルA2(2,1)から始まる5つの整数を取得して二次元配列numに格納
  const num=ss.getRange(2,1,5).getValues();
  
}

手順3:スプレッドシートの出力前に5つの整数が格納された二次元配列numを取得できたことをログ出力で確認する

console.log(num);

下記のコードと、その実行結果のログ出力です。

function standardInput3() {

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

  //スプレッドシートの出力前にnumに二次元配列として5つの整数を取得して格納出来たことをログ出力で確認
  console.log(num);
  
}

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

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

下記のコードと実行後のスプレッドシートです。

C2から出力するので、(2,3)になり、5行分なので(2,3,5)です。
こちらも列の1列分は省略可能です。
(2,3,5,1)と書いても無事に実行出来ます。

function standardInput3() {

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

  //スプレッドシートの黄色いセルC2(2,3)から始まる5行分の二次元配列numを出力する
  ss.getRange(2,3,5).setValues(num);
  
}

GASは以上です。


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

石神井公園の桜です。

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

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

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

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

■ 関連記事 ■

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

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

paiza レベルアップ問題集 標準入力その4「STEP: 2 2 行の整数の入力」をPythonとGASで解いたコードの紹介

この記事を読むことで、PythonとGASで標準入力を使って、2つの整数を取得する方法が学べます。

GASではスプレッドシートを用いて値を取得して出力しています。

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

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

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

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



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

問題:整数 a, b が 2 行で与えられるので a, b を 2 行で出力してください。

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


手順として、

1:標準入力で整数a,bを取得する

2:取得した整数を出力する

の2ステップで行います。

今回は下記の入出力例1を用います。

入力例1
81
3

出力例1
81
3

まず、準備として、paiza.ioにこのように入力します。
(入力例1をコピペしたのみ)

手順1で標準入力を使って整数を取得します。

整数を取得するので、intの中にinputを入れています。

#標準入力で整数を取得する
a=int(input())
b=int(input())

手順2では取得した整数を出力します。

a=int(input())
b=int(input())

#取得した整数を出力する
print(a)
print(b)

Pythonはこれで完了です。


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

緑色のセル、B1(2,1)〜B2(2,2)に入力した整数を取得して、それを黄色いセルB5(5,2)〜B6(6,2)に出力します。

その際この黄色いセルの所に、二次元配列として取得した整数が格納された配列を出力します。

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

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

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

2:緑色のセルの整数を取得して整数a,bを二次元配列numに格納

3:スプレッドシートの出力前に整数a,bが格納された二次元配列numを取得できたことをログ出力で確認する

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

Standard Inputで標準入力の意味です。

function standardInput2() {

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

}

手順2:緑色のセルの整数をB1(1,2)から2行1列分を取得して、整数a,bを二次元配列numに格納

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

(1,2,2)の最初の(1,2)はセルB1のことで、最後の2は2行分の意味です。
(1,2,2,1)でも問題ありませんが、1列分の1は省略可能です。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルB1(1,2)を起点として2行1列分のセル範囲を取得して二次元配列numに格納
  const num=ss.getRange(1,2,2).getValues();

}

手順3:スプレッドシートの出力前に整数a,bが格納された二次元配列numを取得できたことをログ出力で確認する

console.log(num);

コードと実行結果です。

function standardInput2() {

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

  //スプレッドシートの出力前に2つの整数が格納された二次元配列numを取得出来たことをログ出力で確認
  console.log(num);

}

手順4:スプレッドシートの黄色いセルB5(5,2)を起点とした2行1列の二次元配列numを出力する

ss.getRange(5,2,2).setValues(num);

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

function standardInput2() {

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

  //スプレッドシートの黄色いセルB5(5,2)を起点とした2行1列の二次元配列numを出力する
  ss.getRange(5,2,2).setValues(num);

}

GASは以上になります。


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

お台場の観覧車です。
赤いライトアップですね。

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

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

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

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

■ 関連記事 ■

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

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

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

この記事を読むことで、PythonとGASで標準入力を使って、整数を取得する方法が学べます。

GASではスプレッドシートを用いて値を取得して出力しています。

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

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

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

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


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

問題:整数 a が 1 行で与えられるので a を 1 行で出力してください。

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



手順として、

1:標準入力で整数aを取得する

2:取得した整数を出力する

の2ステップで行います。

今回は下記の入出力例1を用います。

入力例1
813

出力例1
813

まず、準備として、paiza.ioにこのように入力します。
(入力例1をコピペしたのみ)

手順1で標準入力を使って整数を取得します。

#標準入力で整数を取得するのでinputの前にintを用いる
a=int(input())

手順2では取得した整数aを出力します。

a=int(input())

#取得した整数aを出力する
print(a)

Pythonは以上です。


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

緑色のセルB1(1,2)に入力した整数「813」を取得して、それを黄色いセルB3(3,2)に出力します。

その際、この黄色いセルB3(3,2)の所に、二次元配列として取得した整数が格納された配列を出力します。

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

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

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

2:緑色のセルB1(1,2)の整数を取得する


3:スプレッドシートの出力前に整数aが取得できたことをログ出力で確認する


4:スプレッドシートの黄色いセルB3(3,2)に出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

このコードを関数「standardInput1」の所に書いていきます。

Standard Inputで標準入力の意味です。

function standardInput1() {

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

手順2:緑色のセルB1(1,2)の整数「813」を取得する

const a=ss.getRange(1,2).getValue();

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルB1(1,2)の整数を取得する
  const a=ss.getRange(1,2).getValue();
  
}

手順3:スプレッドシートの出力前に整数aが取得できたことをログ出力で確認する

console.log(a);

コードとログ出力です。

function standardInput1() {

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

  //スプレッドシートの出力前に整数aが取得できたことをログ出力で確認する
  console.log(a);
  
}

手順4:スプレッドシートの黄色いセルB3(3,2)に出力する

ss.getRange(3,2).setValue(a);

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

function standardInput1() {

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

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

GASはここまでです。


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

世界自閉症啓発デーとその週間に撮影した都庁(西新宿)です。

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

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

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

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

■ 関連記事 ■

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

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

paiza レベルアップ問題集 標準入力その3「FINAL問題 【半角スペース区切りの入力】半角スペース区切りの 1,000 個の入力」をPythonとGASで解いたコードの紹介

この記事を読むことで、PythonとGASで空白スペースを含む1行の文字列を取得して、空白スペースの所で区切って、ループを使って1000行の文字列に出力する方法が学べます。

また、GASではスプレッドシートを用いて値を取得して出力しています。
更にPythonではループを基本的な書き方と内包表記の書き方の2通りで掲載します。

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

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

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

【半角スペース区切りの入力】半角スペース区切りの 1,000 個の入力 (paizaランク D 相当)

問題:文字列 s_1, s_2, … s_999, s_1000 が半角スペースで区切られて 1 行で与えられます。各文字列を出力するごとに改行し 1,000 行で出力してください。


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

手順として、

1:標準入力で空白スペースを含む文字列を区切って取得する

2:取得した文字列がリストになっていることを確認する


3:ループを使って出力する

の3ステップで行います。

今回は下記の入出力例1を用います。
(1000行は長すぎるので、このブログで入出力例を全て表示することは省かせて頂きます。)

入力例の前半と後半の一部を掲載致します。

<前半>

<後半>

まず、準備として、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行になりよりシンプルなコードが書けました。

Pythonでコメントアウトする場合、1行でしたら「#(シャープ)」ですが、複数行をコメントアウトする際には、「’(シングルクォーテーション)」を3つで「”’」か、「”(ダブルクォーテーション)」を3つで「”””」を使います。
この記事では「”’」とシングルクォーテーションを使っております。

s=input().split(' ')
#print(s) 

'''
通常のループ
for word in s:
    print(word)
'''

#内包表記のループ
[print(word) for word in s]

実行結果は長いので、前半と後半に分けて掲載致します。
まずは前半です。

後半です。

ここまでのコードから、コメントアウトの部分を削除したシンプルなコードです。

#標準入力で空白スペースを含む文字列を区切って取得する
s=input().split(' ')

#内包表記のループ
[print(word) for word in s]


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

B1(1,2)から始まる緑色の所に入力した文字列を取得して、それをB3(3,2)から始まる黄色い所に出力します。

その際B3から始まるこの黄色く塗りつぶしたセルの所に、二次元配列として取得した文字列が格納された配列を出力します。

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

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

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

2:緑色のセルB1を取得して、空白区切り文字の所で区切って配列arrayに格納する

3:配列arrayとして格納出来たことをログ出力で確認する

4:スプレッドシートに出力するため、二次元配列として取得するarray2を宣言する

5:ループを使ってpushメソッドでarray2にarrayを二次元配列として追加する

6:スプレッドシートに出力する前にarray2に二次元配列として格納されていることをログ出力で確認する

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

それでは各手順を具体的に見ていきます。

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

GASでは、「standardInput5」と言う関数にコードを書いていきます。
Standard Inputで標準入力の意味です。

const ss = SpreadsheetApp.getActiveSheet();

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

function standardInput5() {

  const ss=SpreadsheetApp.getActiveSheet();
  
}

手順2:緑色のセルB1(1,2)を取得して、空白区切り文字の所で区切って配列arrayに格納する

const array=ss.getRange(1,2).getValue().split(‘ ‘);

function standardInput5() {

  const ss=SpreadsheetApp.getActiveSheet();
  
  //B1(1,2)から始まる緑色のセルを配列arrayに取得する
  const array=ss.getRange(1,2).getValues().split(' ');

}

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

console.log(array);

function standardInput5() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,2).getValue().split(' ');

  //配列arrayのログ出力
  console.log(array);

}

手順4:スプレッドシートに出力するため、二次元配列として取得するarray2を宣言する

let array2 = [];

手順5:ループを使ってpushメソッドでarray2にarrayを二次元配列として追加する

function standardInput5() {

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

  //二次元配列を宣言
  const array2=[];

  //ループを使ってpushメソッドでarray2にarrayを二次元配列として追加する
  for(let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
}

手順6:スプレッドシートに出力する前にarray2に二次元配列として格納されていることをログ出力で確認する

console.log(array2);

function standardInput5() {

  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);

}

手順7:スプレッドシートの黄色いセルB3(3,2)に出力する

ss.getRange(3,2,s2.length).setValues(array2);

コードと実行結果です。

function standardInput5() {

  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から二次元配列の長さ分を出力する
  ss.getRange(3,2,array2.length).setValues(array2);

}

実行後のスプレッドシートですが、長いので前半と後半に分けて掲載致します。

まずは前半です。

後半です。

(入力データのある1行目は、行固定をしています。行番号を選択して、表示メニューの表示→固定から行1までを選んでいます。)


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

クリスマスシーズンに訪れた「恵比寿ガーデンプレイス」の、フランスのクリスタルメーカー「バカラ」のシャンデリアのクールなブルーです。

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

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

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

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

■ 関連記事 ■

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

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