【ツインテールセットをゲット】Pythonの理解を深めよう

オンラインハッカソン
Scratch星人
Scratch星人

6回目の「オンラインハッカソンに挑戦」を始めていこうと思います。

今回、問題の難易度は「普通くらい」ですが、後半、Pythonのコードについて少し詳しく解説していきます。

全て理解しようとしなくて大丈夫ですので、スクラッチとの違いを見比べながら、楽しんで学習していきましょう。

「ツインテールセット」の問題

少し問題文が長いので難しく感じますが、しっかり読んでいってみましょう。

それでは、要点をまとめてみます。

  • 2つのドリンクのコストパフォーマンス(CPと呼ぶ)を比べる問題
    (カフェイン量÷値段=数字が大きい方がCPが高い)
  • 入力データ:カフェイン量(c_1,c_2)・値段(p_1,p_2)
    (データの入力方法は後ほど解説)
  • 出力データ:ドリンク1がCPが高い場合→1と出力(ドリンク2なら2)

今回は要点をまとめても、まだ難しく感じます。
以下のドリンクを例に詳しく解説していきます。

  • ドリンク1:カフェイン量(200)、値段(250)
  • ドリンク2:カフェイン量(180)、値段(200)

データの入力方法

実際にpythonのコードで入力する場合は、以下のように入力していくことになります。
(・←この点は関係ありません)

200・スペースキー・250・エンターキー
180・スペースキー・200・エンターキー

上記の数値を変数にそれぞれ格納します。

200:c_1、250:p_1
180:c_2、200:p_2

CP(コストパフォーマンス)を求める

ドリンク1:200 ÷ 250 = 0.8
ドリンク2:180 ÷ 200 = 0.9

ドリンク2の方が数字が大きいのでCPが高いと言えます。

よって、出力データは「2」となります。

スクラッチでプログラムを作成

答えは上のコードになります。

あまり難しいことはやっていませんが、入力データの受け取り方が違うことに気が付きましたか?

先ほど見た問題では、入力は「カフェイン量・スペースキー・値段・エンター」で受け取ることになっていました。

しかし、上のコードはそうはなっておらず、ひとつずつ受け取るようになっています。

なぜかと言うと、スクラッチで作ろうと思うと難しくなってしまうからです( ;∀;)

そうは言っても、「問題と違うコードは納得いかない!!」というあなたのために、以下に難しいコードの画像を公開します。
(コードが長いので2枚の画像になります)

難しそうに見えますが、ポイントは、入力データの区切り(スペースキー)の位置を正しく認識させて、前半と後半の値を別々の変数に格納することです。

Pythonで解いてみる

たった6行のコードで書くことが出来ました。

Scratch星人
Scratch星人

変数名については以下のように読み替えてください。

a: c_1

b: p_1

c: c_2

d: p_2

毎回そうですが、すっきり短く出来るのがスクラッチとの違いであり、プログラミング言語(python)の良さでもあります。

一行目と二行目は、内包表記と呼ばれる応用的な書き方をしているため、もう少し簡単に解説するためにコードを書き換えてみます。

上から三行を解説していきます。

まず、一行目のinput()というのは、入力を受け付けるコードです。
スクラッチの「あなたの名前は何ですか?」と同じようなものと思って大丈夫です。

その後のsplit()というのは、スペースキーを識別して、前後の値を分けてくれるものです。
それらの2つの数字をinput1という変数に格納します。

しかし、このままでは扱いづらいので、それぞれ、カフェイン量はaに、値段はbに格納します。

二行目と三行目に登場するint()というコードですが、プログラミングでは大切な意味を持ちます。

  • input()で入力された値は、数字であっても文字として扱われる
  • 文字のことを「str」、数字(整数)のことを「int」という
  • 文字として扱われている値を「int(数値)」に変換している

「str」や「int」のようなもののことを「タイプ」や「型」と呼びます。

プログラミング言語において、型はとても重要です。
(スクラッチではあまり意識しなくても、コードが実行出来る優しい仕様になっています)

何やら、説明が長くなってしまいましたが、Pythonはコードが短くなり、スッキリする反面、スクラッチとは違って、コードが直感的に分かりづらかったり、型などにも気をつける必要がある。ということを頭に入れてもらえれば大丈夫です。

まとめ

「オンラインハッカソンに挑戦」の6回目が終了しました。

これまでに比べて、難易度も上がり、一度読んだだけでは分かりづらい部分もあるかもしれません。

この記事は「スクラッチにはだいぶ慣れた」「スクラッチ、少し飽きたかも・・」という人向けに書いています。

スクラッチは、プログラミング学習のための素晴らしいツールですが、Pythonなどの本格的なプログラミングは、早くから学んだ方が、成長につながり、将来的にお仕事の役にも立ちます。

興味を持ったあなたは、ぜひPythonに挑戦してみましょう( ^∀^)

コメント

タイトルとURLをコピーしました