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

この記事を読むことで、ループの基本と内包表記の概要を掴めます。

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

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

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。その使い方は、この記事で問題の解き方を通して図解で解説しております。

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


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

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

今回は入力例2で解きます。

入力例2
5


出力例2
1
2
3
4
5


paiza.io を開きます。

※ 下記の図解は2026年7月4日時点のものです ※

右下の緑色の「コード作成を試してみる(無料)」を選択します。

登録無しで無料、日本語対応です。

右上の言語から「Python3」を選びます。

paizaの問題集の入力例2の「5」を、画面の左下の「入力」の下にコピペします。

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

手順として、

1. 標準入力を使ってループを回す回数の5を数値形式で読み込む

2. ループで1から5までを出力する

3. 基本的なループと内包表記の解説

で問題を解いて行きます。


手順1: 標準入力を使ってループを回す回数の5を数値形式で読み込む

今回は入力例2を用いるので、ループを回す回数の5を変数Nに代入します。
また、無事に代入出来たことをprint文で確認として出力します。

画面の状態とコードです。
[Ctrl]+[Enter] で実行出来ます。

#ループを回す回数を標準入力で取得する
N=int(input())

#取得出来たことを確認する
print(N)

手順2: ループで1から5までを出力する

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

現在Nには5が代入されています。

N+1と指定したのは、rangeでの(1,N+1)では、range(最初の数, 最後の数未満)、すなわちrange(1,6)で「1から5まで」となります。

悩まれた場合は、range(1,N)とループの設定をしてその挙動を見て、コードを書きながら掴んで行くと迷いにくいです。

N=int(input())

#print(N) ← コメントアウト

#ループでrangeの中を1からNまでに設定
for i in range(1,N):
    print(i)

この場合は、最後の5が出力されませんでした。

では、正しいコードに書き直します。
コメントアウトしたコードは削除しました。

N=int(input())

#ループでrangeの中を1から「N+1」までに設定
for i in range(1,N+1):
    print(i)

実行結果です。

次に、ループをたった1行で書く内包表記を用いて動かしてみます。
このコードの例ですと、[ ] の中に最初に出力したいprint文、その後にfor文が続きます。

[print(i) for i in range(1,N+1)]

コードはこの様にシンプルになりました。

N=int(input())

#ループの内包表記
[print(i) for i in range(1,N+1)]    

Pythonは以上になります。


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

Nの値は緑のセルA2に5と入力してあり、その値を取得してループの回数に致します。
C列のC2(2,3)から始まる5行分の黄色いセルに1からNまでを出力します。

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

手順は以下の様になります。

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

2: 空の配列arrayを宣言する

3: ループの回数Nを緑のセルA2(2,1)から読み込む

4: ループで1からNまでの数を配列arrayが二次元配列になるようにarrayに追加する

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

6: スプレッドシートのC2から始まる黄色いセルにN=5行分出力する

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

関数loop2の中に書いて行きます。

function loop2() {

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

}


手順2: 空の配列arrayを宣言する

スプレッドシートに出力用の空の配列arrayを宣言します。

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

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

}

手順3: ループの回数Nを緑のセルA2(2,1)から読み込む

Nが入力されているセルA2が(2,1)になり、その値をgetValueで取得しています。
また、無事に取得されてことをログで出力して確認しています。

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

function loop2() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=[];

  //セルA2からN=5を取得する
  const N=ss.getRange(2,1).getValue();

  //Nが取得出来たことをログで確認する
  console.log(N);
  
}

手順4: ループで1からNまでの数を配列arrayが二次元配列になるようにarrayに追加する

まず、ループの条件部分ですが、

for(let i=1;i<=N;i++)

このように、ループの中でiが1からN(=5)まで変わることにより、変数ですのでletを用いて宣言しています。

i<=Nで、ループを回す回数を指定して、i++でiの値を一つずつ増やすインクリメントをしています。

また、配列arrayに二次元配列として数値を追加するのに、pushメソッドを使っています。

array.push([i]);

この時[i]と表記することで、配列arrayに二次元で数値が追加されます。

function loop2() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=[];
  
  const N=ss.getRange(2,1).getValue();
  console.log(N);

  //ループを用いてarrayが二次元配列になる様に1からN=5までを追加する
  for(let i=1;i<=N;i++){
    array.push([i]);
  }

}

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

コードと実行した出力結果のログ画像です。

function loop2() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=[];
  
  const N=ss.getRange(2,1).getValue();
  console.log(N);

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

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

}

arrayが二次元配列として取得出来たことが確認されました。


手順6: スプレッドシートのC2から始まる黄色いセルにN=5行分出力する

下記の書式でスプレッドシートに出力します。

ss.getValue(2,3,N).setValues(array);

スプレッドシートの黄色いセルの始まりのC2は(2,3)で5行分指定するのに(2,3,N)となります。

1列分ですので、(2,3,N,1)と指定することも出来ますが、1列の場合は省略可能です。
コードとスプレッドシートの実行結果です。

function loop2() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=[];
  
  const N=ss.getRange(2,1).getValue();
  console.log(N);

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

  console.log(array);

  //スプレッドシートのC2(2,3)から始まる黄色いセル5行分の出力結果
  ss.getRange(2,3,N).setValues(array);

}


おまけですが、緑のセルA2のNの値を例えばpaiza問題集の入力例3の「28」に変更して実行すると、ログ出力とスプレッドシートの実行結果はこの様になります。


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

千葉県の房総半島、外房「御宿(おんじゅく)海です。

ここの海は透明度がとても高くて、綺麗な海を関東地方で見たい方にはお勧めのスポットです。交通の便があまり宜しくない分、美しい海をじっくりと堪能出来ます。

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

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

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

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

■ 関連記事 ■

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

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

【Excel基本関数(平均・最大値、IF関数)と条件付き書式】富士山頂の気温の例

この記事では富士山頂の気温のデータを使って、

・関数の王様、IF関数

・平均(AVERAGE)

・絶対参照

・最大の気温(MAX)
/ 最小の気温(MIN)

・条件付き書式

・指定の温度以上の件数(COUNTIF)


といった、基本的な集計で使うExcel関数を気温を扱う簡単な例で概要が掴めます。

以下のExcelに入力した気温には、気象庁のホームページのデータを使用しております。

まず、平均を求めてみます。
セルF1の所に、

=AVERAGE(B2:B7)

と入力します。
( 「=ave」と入力後、Tabキーで補完すると楽に関数名が入力出来ます。 )


では、次に、再びこのシートをご覧下さい。

セルC2〜C7の所で、気温が平均値以上でしたら「平均以上」と表示して、そうでなければ「—」(「-」を3つ)表示させるようにします。
式をこのように入れます。

=IF(B2>=$F$1,”平均以上”,”—“)

ここで気をつけるポイントは、先程平均値を求めたセルF1は、固定する必要がありますので、絶対参照にします。

1970年から1980年の所に数式を下に引っ張っていくとズレてしまうので、その前に[F4]キーを押して$(ドル)マークを付けて「$F$1」としています。

(ノートPCの環境によっては、[F4]キーと同時に[Fn]キーも押してみて下さい。)

もしも絶対参照にしないと、この様に平均気温の入ったF1が下にフィルをすると、ずれてしまいます。
F列の赤い枠線に着目して見て下さい。

【 C2に入った式 】

【 C3に入った式 】

これを先ほどの絶対参照にすると、

【 C3の式(絶対参照) 】

この様に参照先である平均気温が下にずれなくなりました。

それでは、絶対参照にした式を下にフィルします。
(セルC2は、中央揃えをしております。)


もしも、オートフィルが消えなくて困る場合は、何もないセルを選択して、[スペースキー]を押してみて下さい。
(余分な余白は後で削除します。)


次に最大値と最小値です。
【最大値】はセルF2に

=MAX(B2:B7)

と入力します。

【最小値】はセルF3に

=MIN(B2:B7)

と入力します。


さて、ちょっと関数から離れて、条件付き書式の設定をします。
最大値と最小値に書式を設定します。

まずは、平均気温のデータの所を選択します。

ホームタブから条件付き書式を選択して、

条件付き書式を設定します。

セルの強調表示ルール → 指定の値に等しい

を選びます。(Macの手順ですので、もしもWindowsの方で手順が異なっていましたら、恐れ入りますが検索して調べて頂けますと有り難いです。お手数お掛け致します。)

気温の最大値を参照する様にして、書式は好きな色を選びます。


OKを押します。

最大値の気温に書式が設定されました。

同様にして最小値にも書式を設定しました。


では、再び関数に戻って「-6℃」以上の件数を数えます。


セルF4に、

=COUNTIF(B2:B7,”>=-6″)

と入力するとこの様に「3件」と求まります。


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

江ノ電稲村ヶ崎海岸から撮影した、富士山と江ノ島です。
映画、「稲村ジェーン」の舞台になった所ですね。

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

「できるYouTuber式 Excel現場の教科書(長内孝平氏)」

単行本(ソフトカバー)
Kindle版


「なんの才能もない発達障害者の声: 〜 届かない声を届けたい 〜 (障害者雇用向け)」

私、猫★シエスタの著作です。殆どが「発達障害者として働くことや障害とSNSについて」ですが、障害者雇用の事務作業で特に使用頻度の高いキーに絞ったExcelなどのショートカットキーの紹介と、演習問題も掲載しております。
Kindle版


「取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ」に戻る

初めてのGoogleスプレッドシートへ



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

息抜きに、写真で癒し(=^x^=)

このコーナーでは、癒しをテーマに、「夜景」や「自然」などの写真を中心に
掲載しています。

ごゆっくりと、くつろいで行って下さい(=^x^=)

フォトストック写真ACさんに投稿をしております。

Threads始めました!!
フォロー宜しくお願いします(=^x^=)


■ 乗り物 ■

多摩モノレールと中央本線


■ 今は無き、思い出の場所■

お台場パレットタウンメモリーズ



■ 桜 、お花見■

埼玉の植民地、「池袋」西口公園の桜

東京下町、足立区の桜

石神井公園 アニメ聖地巡礼平成最後の花見

目白庭園の夜桜


■ 新緑 ■

水元公園でサイクリング。ゴールデンウィークの爽やかな風・グリーンエクササイズ。



■ 梅雨時 ■

代々木公園、雨粒はじけるアジサイとバラ



■ 夏・納涼 ■

いたばし花火大会(2023)


いたばし花火大会(2019)


海と空、波打ち際、地球の息吹が味わえる御宿(房総半島)

江ノ電の旅 鎌倉高校前駅のロケ地にもなっている海

湘南の海!片瀬海岸と江ノ島岩場

立川市のひまわり(国営昭和記念公園 西立川口 サンフィニティ)

等々力渓谷 世田谷区の自然 とても東京23区内とは思えない自然と涼しさ



■ ハロウィン ■

六本木ヒルズでトリックオアトリート!?


東池袋、サンシャイン60展望台のハロウィン



■ 紅葉 ■

目白庭園


■ Xmasイルミネーション ■

お台場レインボー冬の花火大会2022

東京駅丸の内シャンパンゴールドに輝く街路樹

よみうりランドのジュエルミネーション

お台場

東京メガイルミ


恵比寿ガーデンプレイス


横浜みなとみらい

有楽町MULLION(マリオン)〜銀座のクリスマスイルミネーション

恋するイタリア 東京ドームシティ2016



■ 地元、東京下町 ■

スカイツリー3地点観測


ようこそ!スカイツリー、浅草へ!!

谷根千。日暮里から谷中銀座の昭和レトロな散策。

すみだ水族館のふわきゅんクラゲまつり


■ 工場萌え ■

2019年8月川崎工場地帯

2023年1月川崎千鳥橋方面


■ その他ライトアップ ■

羽田空港第一ターミナルで飛行機と空港夜景を撮影

六本木ヒルズスカイデッキから望む東京タワー

都庁と西新宿の夜景



■ その他 ■

サンシャイン水族館の空飛ぶペンギン

浮間公園の風車(埼京線浮間舟渡 東京都板橋区・北区の旅)

若者の街、表参道ヒルズから原宿までの散策

写ルンです復刻版 瀬戸内しまなみ海道 今治・大島・伯方島の旅

LEGOブロックと光のマジック

落書き風お笑い系芸能人の似顔絵


TikTok始めました。
始めた理由は、TikTokの仕組みに興味を持ったからです。若い方限定のSNSなので、自分には無理だと思っていたのですが、他のSNSが時間に影響を受ける仕組みに対してTikTokは時間に影響を受けないループ型なので、良い動画であれば過去の動画も見て頂けるという仕組みに興味を持って始めました。TikTokは、Twitterが使える方なら多分すぐ慣れると思いますし、動画編集に至っては、YouTubeの100倍以上楽です。

インスタ再開しました。

写真の投稿を始めました。
(写真AC)のプロフィールページです。

写真のアンケートを実施しております。
宜しかったらご回答頂けますと、大変励みになります(=^x^=)

フォトストック写真ACさんに投稿をしております。

メインメニューに戻る
自己紹介


初めてのPhotoshop


【 COUNTIF関数】Excelでサザエさんキャラの25歳以上の人数を数える

この記事では、国民的アニメ「サザエさん」のキャラクターの例を通して、

・COUNTIF関数で25歳以上のキャラクターの人数を数える

・日付をTODAY関数で表示する

・日付をショートカットキーで表示する

・3/14(金)などのユーザー定義の使い方


・3「人」などの単位をユーザー定義で付ける方法

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

キャラクターの年齢は、サザエさんの公式サイト参考にして、下記の様な簡単な表を作成しました。

年齢不明のキャラクターの「磯野フネ」さんとペットの「タマ」は、テキトーな年齢にして、下記のような表を作りました。


黄色いセルのあるF1に、

=COUNTIF(年齢のセル範囲 , “>=25”)

という、数式を入力します。
25歳以上は、 ” ダブルクォーテーション ” をつけて、

“>=25”

と入力します。
セルF1に、具体的には下記の式を入力します。

=COUNTIF(C2:C9,”>=25″)

この ” ダブルクォーテーション ” を忘れるとエラーになってしまいますので、お気を付けて下さいませ。

この場合ですと、
・波平さん
・フネさん
・マスオさん

の「3」人が、該当しました。


さて、今度はこの表のオレンジのセルB11に、今日の日付を入れてみます。

日付をファイルを開く都度の更新にする場合は、

=TODAY()

とTODAY関数を使います。

今日は、2025年3月14日のホワイトデーですが、明日このファイルを開くと、3月15日に更新されます。

更新せずに、ずっと同じ3月14日(金)日付にしたい場合はショートカットキーで

[ctrl]+[;(セミコロン)]

を押します。

Macをお使いの方、[command]でこのキーを押すと時刻になってしまうので、[control]で押して下さい。

この日付の形式を3/14(金)の様にしたい場合は、

[Ctrl]+[1]

を押して、ユーザー定義(左のリストの一番下)を選択して、

m/d(aaa)

と入力してOKを押します。

下の図はMacですが、Windowsでも多分大体同じだと思います。
異なっている点がもしもございましたら、お手数ですが検索して調べて頂けますと有り難いです。

OKを押すと、この様に曜日も表示されました。


次に、一旦F1の黄色いセルに戻って、25歳以上の人数に「人」と単位を付けます。

同じように[Ctrl]+[1]を押して、左側のユーザー定義から

0人

と入力すると、

と、人数の単位が付きました。

あれ、カツオくんが年下になっているどころか、サザエさんまでも年下になっている!?

今回、人数が少ないキャラクターの例の年齢でCOUNTIF関数を使いましたが、もっと大人数の方で試したい場合は、テストデータージェネレーターが便利です。
Excelやスプレッドシートの勉強に役立ちます。

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

写真は、恵比寿ガーデンプレイスのクリスマスイルミネーションです。


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

「できるYouTuber式 Excel現場の教科書(長内孝平氏)」

単行本(ソフトカバー)
Kindle版


「なんの才能もない発達障害者の声: 〜 届かない声を届けたい 〜 (障害者雇用向け)」

私、猫★シエスタの著作です。殆どが「発達障害者として働くことや障害とSNSについて」ですが、障害者雇用の事務作業で特に使用頻度の高いキーに絞ったExcelなどのショートカットキーの紹介と、演習問題も掲載しております。
Kindle版

「取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ」に戻る

初めてのGoogleスプレッドシートへ



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

モバイルバージョンを終了