paiza レベルアップ問題集 「STEP: 2 九九の表示 1」をPythonとGASで解いてみた

この記事を読むと、PythonでのIF文、Forループの基本的な書き方と対応づけて、内包表記でのループ・if・elseを1行で書くことが可能になります。
また、このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

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

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

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

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

九九の表示 1 (paizaランク D 相当)

問題:九九の 8 の段を半角スペース区切りで出力してください。
入力値:なし
期待する出力値:「8 16 24 32 40 48 56 64 72」

この問題では、8〜64までがスペース区切り、最後の72の所で改行する形で書かれています。
ループでiを1から9まで回して、i*8で8倍して、iが9(計算結果が72)ではない時にスペース区切り、そうでなければ改行での出力が求められます。

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

手順として、
1.for文でi=1からi=9までループを回す
2.ループ内でiが9ではない(i!=9)であればスペース区切りで出力する
3.else(i==9)の時は改行する

まずは最初に基本的なループとIF文のコードです。

for i in range(1,10):
    if i!=9:
        print(i*8,end=' ')
    else:
        print(i*8)

これを内包表記でたった1行で書くとこの様になります。

[print(i*8,end=' ') if i!=9 else print(i*8) for i in range(1,10)]

公式のようにまとめると、if else と for を使った内包表記は、

[真の時の結果 if 条件式 else 偽の時の結果 いつものfor文]

になります。

どちらの実行結果も、この様になりました。

<<GASでの解き方>>

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

九九の8の段を黄色の所に求めます。

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

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

1:スプレッドシートからアクティブシートをアクセスする
2:九九の8の段階を格納する作業用の配列tempを宣言する
3:ループでtempに8の段の一次元配列を格納する
4:ログでtempに九九の8の段が格納されたことを確認する
5:スプレッドシートに二次元配列として格納する配列arrayを宣言する
6:ここでarrayにtempを入れて二次元配列に出来たことをログで確認する
7:スプレッドシートの黄色いセルに九九の8の段が入った二次元配列を出力する

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

const ss=SpreadsheetApp.getActiveSheet();

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

手順2:九九の8の段階を格納する作業用の配列tempを宣言する

let temp=[]

手順3:ループでtempに8の段の一次元配列を格納する

pushを使うことで配列tempに追加格納しています。

 for (let i=1;i<=9;i++){
    temp.push(i*8);
  }

手順4:ログでtempに九九の8の段が格納されたことを確認する

console.log(temp);

手順5:スプレッドシートに二次元配列として格納する配列arrayを宣言する

let array=[];

手順6:ここでarrayにtempを入れて二次元配列に出来たことをログで確認する

array.push(temp);
console.log(array);

手順7:スプレッドシートの黄色いセルに九九の8の段が入った二次元配列を出力する

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

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

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

function loop13(){
  
  //SpreadsheetAppから階層を辿ってアクティブシートをアクセスする
  const ss=SpreadsheetApp.getActiveSheet();
  
  //九九の8の段階を格納する作業用の配列tempを宣言する
  let temp=[]

  //ループでtempに8の段の一次元配列を格納する
  for (let i=1;i<=9;i++){
    temp.push(i*8);
  }

  //ログでtempに九九の8の段が格納されたことを確認する
  console.log(temp);

  //スプレッドシートに二次元配列として格納する配列arrayを宣言する
  let array=[];

  //ここでarrayにtempを入れて二次元配列に出来たことをログで確認する
  array.push(temp);
  console.log(array);

  //スプレッドシートの黄色いセルに九九の8の段が入った二次元配列を出力する
  ss.getRange(1,1,1,9).setValues(array);

}

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

お疲れ様でした。

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

東京スカイツリー、割とドアップ!!!!!

■ 参考文献の紹介■

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

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

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

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

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

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

【Python関数初心者向けの関数ドリル!!】関数を立体図形で使いこなす!ピラミッドを作れ!(立方体・直方体・円柱・三角錐・四角錐・円錐)

この記事を読むことで、Pythonの関数で立方体、ピラミッド・三角錐・円錐・円柱の体積を求めることによって、関数をガンガン使いこなせる様になる例題をガシガシ解くことができます。関数のドリルのような記事だとイメージして頂いて大丈夫です。

また、体積なので、三乗を使い、Pythonでの累乗(二乗、三乗)などの書き方も学べます。

前回の記事で、関数をカレーライスを作る時の例を通して実際に手を動かして作ってみました。
【Python関数初心者向け!!】関数を「カレーライス」で覚えて、平面図形の面積を求めてみる(長方形、三角形、台形)とプログラミング英語

宜しければこちらもご覧いただけますと、大変嬉しいです。
また、カレーライスを例にしたので、私が今までで食べて来た中で最も美味しいと思ったカレー屋さんの紹介のリンクも貼っています。

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

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

おはこんばんちは!
うにゃうにゃエンジニアの猫です(=^x^=)

いきなりですが、下記のプログラムでPythonの演習をいたしましょう。

● 立方体の体積を求める ●
立方体とは、サイコロです。
こちらのサイトで詳細を書かれています。
体積の求め方は、縦、横、高さです。

サイコロだったら全部同じ長さなので、今回は3cmの立方体の体積を求めます。

まず、辺の長さをここで定義しています。

side=3

次に関数を呼び出します。

volume=cube(side)

立方体の体積を求めるcube関数が引数にside(今回は3cm)で呼び出されました。

では、cube関数のコードです。

#立方体の体積を計算する関数
def cube(x):
    return x**3

このxの所に3が入って3乗の計算結果をreturnで返しています。
二乗でも考え方は同じですが、三乗ではこのように書いています。

x**3

それが戻り値としてvolumeに入ります。

volume=cube(side)

これで、出力します。

ここまでのコードと実行結果です。

#立方体の体積を計算する関数
def cube(x):
    return x**3


#辺の長さを定義
side=3

#関数を呼び出し
volume=cube(side)

#立方体の体積を表示
print('立方体の体積は【'+str(volume)+'】cm^3です。')

● 直方体の体積●
では次に、直方体の体積を求めます。
直方体はこちらのサイトが分かりやすいです。前項の立方体の復習にもなります。

直方体の体積は、タテ×ヨコ×高さなので、この様にコードを書き換えました。
実行結果です。

#直方体の体積を計算する関数
def rectangular(x,y,z):
    return x*y*z


#タテ、ヨコ、高さを定義
vertical=3
beside=5
height=7

#関数を呼び出し
volume=rectangular(vertical,beside,height)

#直方体の体積を表示
print('直方体の体積は【'+str(volume)+'】cm^3です。')

● 円柱の体積●
円柱の体積はこちらの記事が分かりやすいです。
円柱の体積は円の面積に高さをかけて求めるので、円周率πを使うため、mathモジュールをインポートしました。
また、円周率は桁数が長いので、小数点以下3桁まで求める様にしました。

ここではこの記事に合わせて、円の半径を5cm、円柱の高さを10cmとしています。

#円周率πを使うため、mathモジュールをインポートする
import math

#円柱の体積を計算する関数
def cylinder(r,h):
    return math.pi*r**2*h


#半径と高さを定義
radius=5
height=10

#関数を呼び出し
volume=cylinder(radius,height)

#小数点以下3桁まで求める
volume=round(volume,3)

#円柱の体積を表示
print('円柱の体積は【'+str(volume)+'】cm^3です。')

円の面積については併せてこのブログ内のこちらの記事をご覧頂けると嬉しいです。
【Python初心者必見!!】改行の仕方、円周率の使って面積、球体の体積、円周を計算する関数の使い方、二乗3乗などの累乗の計算の仕方、戻り値の小数点以下桁指定

● 三角錐の体積●
三角錐と次項の四角錐については、こちらの記事が分かりやすいです。
まずは、三角錐です。
底面積である三角形の面積に高さをかけて3で割っています。

ここではこの記事に合わせて、タテ4cm、ヨコ5cm、高さ6cmとしています。
また、底面積が三角形であることと何々錐で3で割っているため、整数で求めています。
コードと実行結果です。

#三角錐の体積を計算する関数
def triangular_pyramid(x,y,z):
    return x*y/2*z/3


#タテ、ヨコ、高さを定義
vertical=4
beside=5
height=6

#関数を呼び出し
volume=triangular_pyramid(vertical,beside,height)

#三角錐の体積を表示
print('三角錐の体積は【'+str(int(volume))+'】cm^3です。')

● 四角錐の体積●
次に四角錐(ピラミッド型)の体積を求めます。
こちらも、先ほどの記事と合わせて、タテ5cm、ヨコ5cm、高さ6cmとしています。

#四角錐の体積を計算する関数
def pyramid(x,y,z):
    return x*y*z/3


#タテ、ヨコ、高さを定義
vertical=5
beside=5
height=6

#関数を呼び出し
volume=pyramid(vertical,beside,height)

#四角錐の体積を表示
print('四角錐の体積は【'+str(int(volume))+'】cm^3です。')

● 円錐の体積●
では、いよいよ最後に円錐の体積を求めます。
円錐の体積は、こちらの記事が分かりやすいです。

底円の面積に高さをかけて3で割ると求められます。
円周率πを使うので、mathモジュールをインポートしています。
ここでは半径を4cm、高さを6cmとしています。

#円周率を使うため、mathモジュールをインポートする
import math

#円錐の体積を計算する関数
def cone(r,h):
    return math.pi*r**2*h/3

#半径と高さを定義
radius=4
height=6

#関数を呼び出し
volume=cone(radius,height)

#小数点以下3桁まで求める
volume=round(volume,3)

#円錐の体積を表示
print('円錐の体積は【'+str(volume)+'】cm^3です。')


円の面積はこちらの記事をご覧ください。
【Python初心者必見!!】改行の仕方、円周率の使って面積、球体の体積、円周を計算する関数の使い方、二乗3乗などの累乗の計算の仕方、戻り値の小数点以下桁指定

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

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

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)