paiza レベルアップ問題集 「STEP: 5 ある数をある回数表示 1」 をPythonとGASの両方で解いてみた

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

ある数をある回数表示 1 (paizaランク D 相当)

問題:3 を 8 回、改行区切りで出力してください。

回答:期待する出力
3 を 8 回、改行区切りで出力してください。
出力の末尾には改行を入れてください。

3
3
3
3
3
3
3
3

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

<<Pythonでの解き方>>

手順として、
1.ループで8回繰り返すように設定する
2.「3」を出力する

コードを見てみましょう。

手順1では、

for i in range(8):

で、ループを使っています。
変数iには0,1,2,3,4,5,6,7が代入されるので、8回繰り返す処理が設定されます。

手順2では、

print(3)

で、3を出力しています。
手順1,2と合わせて、3を8回出力出来ました。

Pythonでの全コードはこちらになります。

for i in range(8):
    print(3)

尚、内包表記を使うと、このようになります。

[print(3) for i in range(8)]

たったの1行で済んでしまいました。

<<GASでの解き方>>

では、同じ問題をGASで解いてみます。

まず、スプレッドシートにこの様に設定しました。
この黄色い部分に結果を出力していきます。

この黄色い部分のA1からA8までに「3」を8回出力します。

※スプレッドシートに表示する場合は、ループを使って一次元配列ではなく、二次元配列としてからの配列に追加をして作成します※

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

1:スプレッドシートからアクティブシートをアクセスする
2:スプレッドシートの黄色い所に出力するのに用いる空の配列を定義する
3:ループで8回配列array[]の中に[3]を格納する
4:arrayに二次元配列として3を8回格納出来たことをログ出力で確認する
5:スプレッドシートに表示する。セルA1から8行分なので、getRange(1,1,8)でセルB1から8行分を確保してそこに配列を流し込むイメージ

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

const ss=SpreadsheetApp.getActiveSheet();

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

手順2:スプレッドシートの黄色い所に出力するのに用いる空の配列を定義する

let array=[];

手順3:ループを8回回して、push([3])を追加して二次元配列として扱えるようにする。

array.push([3]);

ループ全体ではこのようになります。

for(let i=1;i<=8;i++){
    array.push([3]);
  }

手順4:arrayに二次元配列として3を8回格納出来たことをログ出力で確認する

console.log(array);

実行結果です。

手順5:スプレッドシートに表示する。セルA1から8行分なので、getRange(1,1,8)でセルB1から8行分を確保してそこに配列を流し込むイメージ

ss.getRange(1,1,8).setValues(array);

スプレッドシートオブジェクトにgetRangeでセルA1から8行確保し、setValues(array)で出力しています。

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

GASでの全コードはこちらになります。

function loop5(){
  //アクティブシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

  //スプレッドシートに出力用の配列を用意する
  let array=[];

  //ループで空の配列に二次元配列として格納する
  for(let i=1;i<=8;i++){
    array.push([3]);
  }

  //ログでarrayに3が8個格納出来たか確認する
  console.log(array);

  //スプレドシートに格納する
  ss.getRange(1,1,8).setValues(array);
}

宜しかったらコピペしてアレンジして見て下さい。

お疲れ様でした。

ブレイクタイムフォトはこちらになります。

スカイツリーからの夜景

■ 参考文献の紹介■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

←前の問題                      次の問題→

paiza レベルアップ問題集 「STEP: 4 数字の受け取り 2」 をPythonとGASの両方で解いてみた

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

数字の受け取り 2 (paizaランク D 相当)

この問題では、N個の数字が与えられます。
例えば、N=5で5個の場合、
1 2 3 4 5
の数字が与えられます。

入力例3
8
8 1 3 8 1 3 8 1

出力例3
8
1
3
8
1
3
8
1

この入力例の場合は、N=8で8個の数字が与えられます。
これを改行区切りで表示します。

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

<<Pythonでの解き方>>

paiza.ioで、出力例3で実行してみます。paiza.ioの使い方はこちらの記事をご覧下さい。

手順として、
1.数がN個あるので(この場合N=8)、8を標準入力読み込んでNに代入する
2.8個のスペース区切りの数を標準入力で読み込んで配列arrayに代入する
3.ループで出力する。

コードを見てみましょう。

手順1では、

N=int(input())

で、標準入力を数値として読み込みます。

手順2では、

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

で、配列としてスペース区切りの数値を標準入力で読み込みます。
rstripで改行の影響を無くします。
split(‘ ‘)でスペース区切りの数字を読み込みます。

手順3ではループで配列の各要素をnumに代入して出力しています。

Pythonでの全コードはこちらになります。

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

for num in array:
    print(num)

<<GASでの解き方>>

では、同じ問題をGASで解いてみます。

まず、スプレッドシートにこの様に配置しました。

濃い灰色のセルの所に配列の個数8を用意します。
薄い灰色のセルの所に数字「8 1 3 8 1 3 8 1」を用意します。

これをB4からB11の黄色いセルに出力します。

※スプレッドシートに表示する場合は、ループを使って一次元配列ではなく、二次元配列としてからの配列に追加をして作成します※

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

1:からの配列arrayを定義する(後で2次元配列として黄色い所に出力)
2:スプレッドシートからアクティブシートをアクセスする
2:配列の要素数Nを定義する
4:変数cellに、数値をセルB2からI2まで読み込む
5:読み込んだ変数cellをログに出力する
6:ループで0からN未満までを回して、「array.push(cell[0][i])」で付け加えて、二次元配列にする。
(スプレッドシートの薄い灰色の所で取得した配列はcell[0][0]からcell[0][N-1]となる。それを二次元配列として追加するため、array.push([cell[0][i]])でi<Nまでループを回す。)
7:ログに表示
8:スプレッドシートに表示する。セルB4からN行分なので、getRange(4,2,N)でセルB4からN行分を確保してそこに配列を流し込むイメージ

手順1では、このように空の配列を用意して、この配列を使って、最後に黄色い範囲に出力します。

let array=[]

手順2では、アクティブなシートを用意します。

ss=SpreadsheetApp.getActiveSheet();

手順3では、配列の要素数N(この例では8個)を読み込みます。

N=ss.getRange(1,2,1).getValue();

手順4では、配列が入力されている薄い灰色の部分を読み込みます。

cell=ss.getRange(2,2,1,N).getValues();

手順5では読み込んだcell(二次元配列、1行8列)を出力します。

cell=ss.getRange(2,2,1,N).getValues();

手順6では、ループを使って出力用の空の配列arrayに追加して行っています。

for(let i=0;i<N;i++){
    array.push([cell[0][i]]);
  }

iが0からN未満のループを使っています。
配列は0から始まるので、ループは0からN未満になります。
空の配列arrayに、

array.push([cell[0][i]]);

で追加しています。
cellはスプレッドシートの配列が格納されている薄灰色の部分です。
これは1行目に要素が8あるので、cell[0][i]でループを回しながら追加しています。

手順7で、スプレッドシートに格納する、空だった配列arrayを出力しています。

console.log(array);

最初の行ではcellで取得した所を表示していて、次の行では、2次元配列として追加して行ったarrayを表しています。


手順8でスプレッドシートに二次元配列arrayを出力しています。

cell2=ss.getRange(4,2,N).setValues(array);

実行結果です。

GASでの全コードはこちらになります。

function loop4(){

  //後で出力する様の空の配列。
  //これを二次元配列として追加していく
  let array=[] 
  
  //アクティブなスプレッドシートを用意する
  ss=SpreadsheetApp.getActiveSheet();

  //数字の数を読み込む 
  N=ss.getRange(1,2,1).getValue(); 

  //N個の数字を読み込む
  cell=ss.getRange(2,2,1,N).getValues(); 

  //範囲cellを出力
  console.log(cell);

  //ループで出力用の配列arrayを追加していく
  for(let i=0;i<N;i++){
    array.push([cell[0][i]]);
  }

  //2次元配列になったarrayをログ表示
  console.log(array);

  //スプレッドシートの黄色い所に出力
  cell2=ss.getRange(4,2,N).setValues(array); 

}

宜しかったらコピペしてアレンジして見て下さい。

おまけですが、良くある凡ミスエラーとして、行めのsetValue’s’(array)をsetValue(array)と、setValuesのsを抜かしてしまうことです。
結果、このようなエラーになってしまいます。

お疲れ様でした。

ブレイクタイムフォトはこちらになります。

羽田空港第1ターミナル

■ 参考文献の紹介■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

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

【Python関数でジャンケンゲーム】乱数の扱い方など

この記事を読むことで、

・乱数を使った簡単なじゃんけんゲームが作れる

・標準入力


・論理演算子 OR

IF文を使った勝敗分岐の復習

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

ルールとして、
1:グー 2:チョキ 3:パー で、変数youに半角数字で標準入力を使って入力をします。

コンピューターは、1〜3までの乱数を求めて変数pcに代入します。
乱数の算出と表示をするコードはこちらになります。

#乱数を使う為、ランダムモジュールをインポートする
import random

#乱数pcの範囲を1から3までとする
pc=random.randint(1, 3)
print(pc)

これで乱数が求まりました。

次に、あなたの手を標準入力します。

#標準入力で、あなたの出す手を決める
print("じゃんけんの手を半角数字で「1:グー  2:チョキ  3:パー」 >>>",end="")
you=int(input())

これで、半角で数値が入力出来るようになり、1から3までがそれぞれジャンケンの手に対応しています。

勝敗の判定をIF文で行っています。

#勝敗の判定
if you == pc:
    msg="あいこです。"
elif you == pc -1 or you == pc +2:
    msg="YOU WIN!!!!!!"
else:
    msg="YOU LOSE...."

print(msg)

まず、一番簡単なのが「あいこ」の時なので、最初に書きます。
次にあなたがコンピューターに勝つ場合は、

・グー(1) VS チョキ(2)…. youはpcより1小さい

・チョキ(2) VS パー(3)…. youはpcより1小さい

・パー(3) VS グー(1) …. youはpcより2大きい

の場合です。

つまり、youがpcよりも1小さいか、2大きい時にあなたの勝ちとなります。
または、に当たりますので、IF文の中でORを使っています。

ここまでのコードをまとめてみます。

#乱数を使う為、ランダムモジュールをインポートする
import random

#乱数pcの範囲を1から3までとする
pc=random.randint(1, 3)
print(pc)

#標準入力で、あなたの出す手を決める
print("じゃんけんの手を半角数字で「1:グー  2:チョキ  3:パー」 >>>",end="")
you=int(input())


#勝敗の判定
if you == pc:
    msg="あいこです。"
elif you == pc -1 or you == pc +2:
    msg="YOU WIN!!!!!!"
else:
    msg="YOU LOSE...."

print(msg)

ここからは、このジャンケンの部分を関数にしていきます。
コンピュータが出す手の乱数とその手の表示、勝敗分岐まで関数に記述しました。

関数Comuter_Handの仮引数youは、標準入力であなたが入力した1〜3までの半角英数字が入ります。

#コンピューターの出す手の関数
def Computer_Hand(you):

  #乱数pcの範囲を1から3までとする
  pc=random.randint(1, 3)
  print(pc)

  #コンピューターの出した手
  if pc==1:
    print("PC:グー") 
  elif pc==2:
    print("PC:チョキ")
  else:
    print("PC:パー")

  #勝敗の判定
  if you == pc:
    msg="あいこです。"
  elif you == pc -1 or you == pc +2:
    msg="YOU WIN!!!!!!"
  else:
    msg="YOU LOSE...."
  return msg

この関数を呼び出すのは、あなたが標準入力でジャンケンの手を入れてからです。
戻り値として勝敗結果のmsgを呼び出し元に返します。

#標準入力で、あなたの出す手を決める
print("じゃんけんの手を半角数字で「1:グー  2:チョキ  3:パー」 >>>",end="")
you=int(input())

judge=Computer_Hand(you)

関数Computer _Handの引数をyouとして呼び出しています。
戻り値として帰ってきた勝敗結果がjudgeに代入されます。


ジャンケンコードの全体と実行結果です。

#乱数を使う為、ランダムモジュールをインポートする
import random

#コンピューターの出す手の関数
def Computer_Hand(you):

  #乱数pcの範囲を1から3までとする
  pc=random.randint(1, 3)
  print(pc)

  #コンピューターの出した手
  if pc==1:
    print("PC:グー") 
  elif pc==2:
    print("PC:チョキ")
  else:
    print("PC:パー")

  #勝敗の判定
  if you == pc:
    msg="あいこです。"
  elif you == pc -1 or you == pc +2:
    msg="YOU WIN!!!!!!"
  else:
    msg="YOU LOSE...."
  return msg


#標準入力で、あなたの出す手を決める
print(" じゃんけんの手を半角数字で「1:グー  2:チョキ  3:パー」 >>>",end="")
you=int(input())

judge=Computer_Hand(you)
print(judge)


いきなり負けました(笑)

今度こそは!!

やった、勝った♪

最後はあいこで。


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

東京モノレールです。
羽田空港第二ターミナルまで行きます。

ご精読ありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

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

paiza レベルアップ問題集 「STEP: 3 数字の受け取り 1」 をPythonとGASの両方で解いてみた

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

数字の受け取り 1 (paizaランク D 相当)

この問題では、標準入力で任意の数列が与えられ、それを改行区切りで出力します。
入力例1: 1 2 3 4 5 6 7 8 9 10

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

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

<<Pythonでの解き方>>

手順として、
1.array=list(map(int,input().rstrip().split(‘ ‘)))で配列として標準入力を読み込み
2.for文でrange(0,len(array))を設定
3.print文で出力

コードを見てみましょう。

手順1で配列として標準入力で、読み込むのにlist、複数の値を読み込むのにmapとその引数int。改行の影響を受けないようにrsprit、スペース区切りで読み込むのにsplit(‘ ‘)を使っています。
配列array=[1,2,3,4,5,6,7,8,9,10]と取り込まれ、その添字はarray[0]=1,array[1]=2,array[2]=3,array[3]=4,array[4]=5,array[5]=6,array[6]=7,array[7]=8,array[8]=9,array[9]=10です。

手順2で、まずlen(array)は、配列arrayの長さ(この場合は10)を求めています。
ループを使って範囲を(0,len(array))で、指定したlen(array)=長さ10未満を出力します。
つまり、配列の添字0,1,2,3,4,5,6,7,8,9の10を表示します。
array[i]をループで回してそこに0から9までを入れて、array[0]からarray[9]を出力します。

Pythonでの全コードはこちらになります。

array=list(map(int,input().rstrip().split(' ')))
for i in range(len(array)):
    print(array[i])

<<GASでの解き方>>

では、同じ問題をGASで解いてみます。

まず、スプレッドシートにこの様に配置しました。

灰色のセル1〜10を配列の数値とします。
これを黄色いセルに出力します。

※スプレッドシートに表示する場合は、ループを使って一次元配列ではなく、二次元配列としてからの配列に追加をして作成します※

手順はこのようになります。
1:配列arrayを定義する
2:スプレッドシートからアクティブシートをアクセスする
3:変数cellに、灰色の所の数値をセルB1からK1まで読み込む
4:変数cellに値が格納されたことをログで確認します。
5:ループを0から10未満までを回して、「array.push[i]」で付け加えて、二次元配列にする。
(array.push(i)だと1次元配列になり、二次元配列ではないと、二次元配列のスプレッドシートには読み込めないため。)
6:ログに表示
7:スプレッドシートに表示する。セルB3からarray.length[0]行分なので、getRange(3,2,array.length[0])でセルB3からarrray.length[0]行分を確保してそこに配列を流し込むイメージ

手順1では、後にスプレッドシートの黄色い所に出力するのに使う配列arrayを定義します。

let array=[];

手順2では、アクティブなスプレッドシートにアクセスします。

ss=SpreadsheetApp.getActiveSheet();

手順3では、灰色の所を変数cellに代入します。

cell=ss.getRange(1,2,1,10).getValues();

手順4では、変数cellにスプレッドシートから無事に値が格納されたことを確認します。

console.log(cell);

手順5では、配列cellの0行目の添字0から10未満までループを回して、空の配列arrayに二次元配列として値を格納します。

for(let i=0;i<10;i++){
    array.push([cell[0][i]]);
  }

array.push([cell[0][i]])

と、なっているのは、スプレッドシートでは二次元配列として格納されるので、1行目の1列から最後の列まで格納して行っています。

手順6では、arrayが二次元配列として値が格納されたことをログで確認しています。

手順7では、arrayをスプレッドシートの黄色い部分に格納しています。

実行結果です。

GASでの全コードはこちらになります。

function loop3(){
  
  //スプレッドシートの黄色い所に格納するのに使う空の配列を定義します。
  let array=[];

  //アクティブなシートにアクセスします。
  ss=SpreadsheetApp.getActiveSheet();

  //スプレッドシートの灰色の所の数値を変数cellに格納します。
  cell=ss.getRange(1,2,1,10).getValues();
  
  //格納出来たことをログで確認します。
  console.log(cell);

  //ループで配列の添字0から10未満までループを回して空の配列に格納します。
  for(let i=0;i<10;i++){
    array.push([cell[0][i]]);
  }

  //スプレッドシート格納に使うarrayに格納されたことをログで格納する
  console.log(array);

  //スプレッドシートの黄色い部分に格納
  ss.getRange(3,2,cell[0].length).setValues(array);

}

宜しかったらコピペしてアレンジして見て下さい。

お疲れ様でした。

ブレイクタイムフォトはこちらになります。

都庁前の噴水です。

■ 参考文献の紹介 ■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

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

paiza レベルアップ問題集 「STEP: 2 ある数字までの出力 2」 をPythonとGASの両方で解いてみた

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

ある数字までの出力 2 (paizaランク D 相当)

この問題では、1から指定の数Nまでを出力します。
指定の数は、任意の数が入力されます。

今回はpaiza.ioを使って解きます。
この記事では、paiza.ioの使い方を図を用いて解説しております。

まず、Pythonで解いてみます。
この例では言語を「Python3」に選択してあります。

■ Pythonでの解き方 ■

この画面の左下の「入力」の下に「5」など任意の数を入力します。

コードを書いていきます。

動作が確認できたので、paiza問題集の提出用コード入力の所に、コピペして提出します。

正解しました。

ここから解き方を見ていきます。

手順として、

1.N=int(input())で標準入力を読み込み

2.for文でrange(1,N+1)を設定

3.print文で表示

となります。
コードを詳しく見てみましょう。

手順1でN+1となっているのは、rangeでは(1,N+1)と指定した場合、(1,N+1)未満、すなわち(1からNまで)となるからです。

Pythonでの全コードはこちらになります。

N=int(input())
for i in range(1,N+1):
    print(i)

■ GASでの解き方 ■

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

この黄色いセルに1からNまで表示します。
Nは灰色のセルの横に入力しています。
スプレッドシートに表示する場合は、二次元配列を作成します。

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

1:配列arrayを定義する

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

3:NをセルB2から読み込む

4:ループで1からNまでの数をarray.push[i]で付け加える。
(array.push(i)だと1次元配列になり、二次元配列のスプレッドシートには読み込めないため。)

5:ログに表示

6:スプレッドシートに表示する。セルB3からN行分なので、getRange(3,2,N)でセルB3からN行確保してそこに配列を流し込むイメージ

実行結果です。

GASでの全コードはこちらになります。

function loop2(){

let array=[];
ss=SpreadsheetApp.getActiveSheet();
N=ss.getRange(1,2,1).getValue();

for(let i=1;i<=N;i++){
  array.push([i]);
}

console.log(array);
ss.getRange(3,2,N).setValues(array);

}

宜しかったらコピペしてアレンジして見て下さい。

おまけですが、Nの値を例えば28にすると、こうなります。
これはスプレッドシートのB1の値を変更しただけです。

お疲れ様でした。

ブレイクタイムフォトはこちらになります。

千葉県房総半島、外房御宿の水平線

■ 参考文献 ■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。

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

paiza レベルアップ問題集 「STEP: 1 ある数字までの出力 1」 をPythonとGASの両方で解いてみた

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

ある数字までの出力 1 (paizaランク D 相当)

この問題では、1から10までの数を出力します。

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

<<Pythonでの解き方>>

手順として、
1.for文でrange(1,11)を設定し、変数num(別にnumじゃなくてもiでもjでもなん  でもOK)に1から11未満(つまり10)を代入
2.print文でnumを表示

コードを見てみましょう。

手順1で11となっているのは、rangeでは(1,11)と指定した場合、(1,11未満)となるからです。

Pythonでの全コードはこちらになります。

for num in range(1,11):
    print(num)

<<GASでの解き方>>

では、同じ問題をGASで解いてみます。

まず、スプレッドシートにこの様に配置しました。

この黄色いセルに1から10まで表示します。
スプレッドシートに表示する場合は、二次元配列を作成します。

手順はこのようになります。
1:配列arrayを定義する
2:スプレッドシートからアクティブシートをアクセスする
3:ループで1から10までの数をarray.push[i]で付け加える。
(array.push(i)だと1次元配列になり、二次元配列のスプレッドシートには読み込めないため。)
4:ログに表示
5:スプレッドシートに表示する。getRange(1,1,10)でセルA1から10行確保してそこに配列を流し込むイメージ

実行結果です。

GASでの全コードはこちらになります。

function loop1() {

let array=[];
ss=SpreadsheetApp.getActiveSheet();

for(let i=1;i<=10;i++){
  array.push([i]);
  };
 
 console.log(array);
 cell=ss.getRange(1,1,10).setValues(array);

}

宜しかったらコピペしてアレンジして見て下さい。

お疲れ様でした。

ブレイクタイムフォトはこちらになります。

レゴブロック

■ 参考文献の紹介 ■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

←レベルアップ問題集メニューへ戻る               →次の問題へ

paizaレベルアップ問題集をPythonとGASの両方で解いてみた集

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

オンラインコミュニティ「paizaの森」と、Cランク獲得ストーリー(Python3)の「問題集を解く」の順番を参考にして、Aランク、Sランクも獲得出来るよう、今後も記事を加筆して行きます。(令和4年1月22日にBランク取得しました。)
Python・GASのどちらの言語のコードも可能な限り詳細に解説して行きます。

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


サイトマップはこちらから

メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

自己紹介

プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。

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

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

■ 標準入力メニューの1 ■

1 行の入力 Python3編

2 行の入力 Python3編

3 行の入力 Python3編

10 行の入力 Python3編

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

■ 標準入力メニュー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編

※スキルチェックのコードやヒントの掲載は禁止されているので問題のリンクのみ※

Dランク問題一覧のリンク

■ ループメニュー 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編

※スキルチェックのコードやヒントの掲載は禁止されているので問題のリンクのみ※

Cランク問題一覧のリンク

※スキルチェックのコードやヒントの掲載は禁止されているので問題のリンクのみ※

Bランク問題一覧のリンク

■ スタックキューメニュー ■

■ スキルチェック見本問題セットのAランク問題 ■
(準備中)

■ スキルチェック過去問題セットのAランク問題 ■
(準備中)

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



(準備中)

スキルチェック過去問セット



(準備中)

■ スキルチェック見本問題セットのAランク問題 ■
(準備中)

※スキルチェックのコードやヒントの掲載は禁止されているので問題のリンクのみ※

Aランク問題一覧のリンク

※スキルチェックのコードやヒントの掲載は禁止されているので問題のリンクのみ※

Sランク問題一覧のリンク

■ 参考文献の紹介 ■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

自己紹介

プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。

Pythonのリスト基礎と長さlenで国内旅行気分でランダムに!!

この記事を読むことによって、国内旅行を例に

・リスト(配列)の基礎

・リストの長さを調べるlen

・リストの要素を取り出し

・乱数と組み合わせて旅行先を表示する

Pythonのリストの初歩的な扱いが可能になります。

リストは団地に似ているのかも知れません。

[‘北海道’,’東京’,’名古屋’,’大阪’,’兵庫’,’沖縄’]

団地の0号室が北海道、1号室が東京・・・5号室が沖縄です。
この階の部屋の長さは0〜5号室までの6です。
ポイントは、最初の部屋は0号室だということです。

これは、リストが0から始まるからです。
このリストをtravelとして、早速コードを書いていきます。

travel=['北海道','東京','名古屋','大阪','兵庫','沖縄']
print(travel[0]) #先頭の「北海道」
print(travel[1]) #その次の「東京」
print(travel[5]) #最後の「沖縄」

実行結果です。

リストの番号を添字と言います。
この例で言うと、北海道の添字は0、沖縄の添字は5になり、先ほどの部屋が何号室かという例と対応しております。

次に、この配列の長さを求めるlenを使ってみます。

travel=['北海道','東京','名古屋','大阪','兵庫','沖縄']
print(travel[0]) 
print(travel[1]) 
print(travel[5]) 

#配列の長さを求めるlen
print(len(travel))

実行結果です。

では、リストの部屋番号(添字)をランダムにして、どこに旅行するのかくじ引き感覚でコードを書いて行きます。

リストの添字をランダムにして、変数indexに格納します。

#ランダムモジュール
import random

#国内旅行のリスト
travel=['北海道','東京','名古屋','大阪','兵庫','沖縄']

#添字indexをランダムにする
index=random.randrange(0,len(travel))

#結果表示
print("添字は"+str(index)+"なので【"+str(travel[index])+"】に行こう!!")

実行結果です。

この、乱数を求める部分のコードですが、

#添字indexをランダムにする
index=random.randrange(0,len(travel))

randrangeによって、0から6未満の乱数を求めています=長さが6
これをrandintにしてしまうと、0から6までになり=長さが7

乱数が6になった時にエラーが表示されます。

#ランダムモジュール
import random

#国内旅行のリスト
travel=['北海道','東京','名古屋','大阪','兵庫','沖縄']

#添字indexをランダムにする← ここをrandintにすることによりエラー発生
index=random.randint(0,len(travel))

#結果表示
print("添字は"+str(index)+"なので【"+str(travel[index])+"】に行こう!!")


このコードでも、乱数が5まででしたら先ほどのrandrangeの時と同じように旅先が表示されるのですが、6になるとこの様なエラーになりました。



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

いたばし花火大会2025です。

ご精読ありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

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

Python で今日の運勢は??randintで星座占い♪

この記事では、

乱数を使って星座を占う

randintで1から12までの乱数を生成する

if、elif、elseの分岐


改行 \n

について学べます。

私は「おうし座」ですので、変数seizaのところに「おうし」と入れました。
ここにあなたの星座やお好きな星座を入れてみて下さい。

まずは、乱数を使った順位の結果のみのコードを掲載いたします。

import random

seiza="おうし"

#1から12までの変数を生成
num=random.randint(1,12)

print("今日の"+seiza+"座は"+str(num)+"位です")

実行結果です。

乱数なので、実行する度に順位が変わります。
最後のprint文のところで、文字列の中で数値である順位のnumを扱う場合には、str(num)としています。

randintと似たようなもので、randrangeがありますが、これはrandom.randrange(1,12)の様に書いた場合には、12「未満」になります。

次に、順位に応じてメッセージを表示する様に、if,elif,elseで分岐を行います。
メッセージは変数msgに格納します。

では、コードです。

import random

seiza="おうし"

#1から12までの変数を生成
num=random.randint(1,12)

print("今日の"+seiza+"座は"+str(num)+"位です")

if num==1:
  msg="超超超超超超超超超・・・おめでとう!!\n"
elif num<=3:
  msg="チョベリグ!\n"
elif num<=9:
  msg="ふつー\n"
elif num==11:
  msg="チョベリブ!\n"
else:
  msg="がび〜〜〜〜〜〜ん\nチョベリバ(涙)\n"

print(msg)

実行結果です。

演算子についてですが、
例えば「num==1」とイコールを2つ書くことによって、その順位(1位)と等しいということを表しています。
=と、一つだけだと代入になりますので。

elif文のnum<=3は3位以下(この場合、2位と3位)を表しています。
elseでそれ以外(この場合12位)です。

msgの中の「\n」バックスラッシュとnで、改行を表しております。

宜しかったら上記のコードをコピペしてアレンジしてみて下さい。


msgの所で「チョベリなんとか・・・」ってありますけれど、かつて「コギャル」と呼ばれた方が女子高生だった頃に流行った言葉です。

チョベリグ・・・超ベリーグッド
チョベリブ・・・超ベリーブルー
チョベリバ・・・超ベリーバッド

だったかな。懐かしいな。


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

千葉県柏市、あけぼの山農業公園のひまわりです。

ご精読ありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

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

GASとPythonで、paiza レベルアップ問題集 配列メニュー を解いてみた7

このコーナーでは、学習コンテンツpaizaのレベルアップ問題集の中から気になった問題をPythonとGASの両方で解いてみます。

paizaでの回答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。

配列の連結 (paizaランク D 相当)

要素数がN個の配列a、M個の配列bを連結したN+M個の配列を出力します。
例として、2個の配列a=[1,2]と、3個の配列b=[3,4,5]を連結した、[1,2,3,4,5]を出力します。

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

入力例
1行目 N,M
2行目 配列a
3行目 配列b

具体例
1行目 2,3
2行目 1,2
3行目 3,4,5

出力
1
2
3
4
5

解き方

手順として、
1.N,Mを読み込む
2.配列aを読み込む
3.配列bを読み込む
4.連結してループで出力する

コードを見てみましょう。

手順1:N,Mを読み込む
N,M=map(int,input().rstrip().split(‘ ‘))

手順2:配列aを読み込む
a=list(map(int,input().rstrip().split(‘ ‘)))

手順3:配列bを読み込む
b=list(map(int,input().rstrip().split(‘ ‘)))

手順4:連結してループで出力する
for num in a+b:
print(num)

配列の連結はa+bで可能です。

Pythonでの全コードはこちらになります。

N,M=map(int,input().rstrip().split(' '))
a=list(map(int,input().rstrip().split(' ')))
b=list(map(int,input().rstrip().split(' ')))

for num in a+b:
    print(num)

では、同じ問題をGASで解いてみます。

まず、スプレッドシートにこの様に配置しました。

配列aの要素数N(2個)をB1、配列bの要素数M(3個)をB2に表示しました。
配列a=[1,2]は4行目、配列b=[1,2,3]は5行目です。
配列aと配列bの連結後(aにbを連結した[1,2,3,4,5])は8行目に出力します。

手順はこのようになります。
1:スプレッドシートからアクティブシートをアクセスする
2:配列aの要素数2を読み込む
3:配列bの要素数3を読み込む
4:配列a自体を読み込む
5:配列b自体を読み込む
6:配列aの後ろに配列bを連結させる
7.スプレッドシートに出力する

手順1,2,3:N,Mを読み込む
sheet=SpreadsheetApp.getActiveSheet();
let N=sheet.getRange(1,2).getValue();
let M=sheet.getRange(2,2).getValue();

手順4,5:配列aとbを読み込む
let a=sheet.getRange(4,2,1,N).getValues();
let b=sheet.getRange(5,2,1,M).getValues();

手順6:配列aの後ろに配列bを結合させる
a[0]=a[0].concat(b[0]);

ログを使って確認
console.log(array);

手順8:スプレッドシートに出力する
sheet.getRange(8,2,1,a[0].length).setValues(a);

a[0].lengthとなっているのは、スプレッドシートは二次元配列だからです。

実行結果です。8行目の黄色いセルに入っています。

GASでの全コードはこちらになります。

function arrayJoin(){

//スプレッドシートを取得
sheet=SpreadsheetApp.getActiveSheet();

//配列aの要素数Nを取得
let N=sheet.getRange(1,2).getValue();

//配列bの要素数Mを取得
let M=sheet.getRange(2,2).getValue();

//配列aを取得
let a=sheet.getRange(4,2,1,N).getValues();

//配列bを取得
let b=sheet.getRange(5,2,1,M).getValues();

//ここで結合している!!
a[0]=a[0].concat(b[0]);

console.log(a);

sheet.getRange(8,2,1,a[0].length).setValues(a);

}

お疲れ様でした。

ブレイクタイムフォトはこちらになります。

お台場 レインボーブリッジと自由の女神と小さいけれど東京タワー

参考文献です。

GAS自作サンプル集に戻る
Python自作サンプル集に戻る
息抜きに、写真で癒し(=^x^=)

基本情報技術者試験
自己紹介