間違いを防ぐ唯一の方法は“見やすさ”

Python
Photo by ThisIsEngineering from Pexels

前回は文字列や変数、コメントといった、
Pythonプログラミングの基本要素を見てきました。
今回はinput( )関数を使った簡単な年齢プログラムを組みたいと思います。

次回はデータ型と関数について説明します。

JUVET
JUVET

ここでは関数を深堀りしないで、使い方だけ見ていきます!

日本語入力してもいいのか

print(文字列, 値)という構造を捉えよう


まずは前回のコメントに関する補足からです。
お気づきだったと思うのですが、コメントが日本語での入力になっていました。
ここで、プログラムは半角英数字での入力が普通ではなかったのか、
という疑問が出てくると思います。

コメントについて、
前回説明したことですが、これはコード(処理)内容を記述したり、
後から読んだときでも、即座に内容を把握するために書くものです。
そのため、人が読んで理解できなければ意味がありません。
この記事の読者は日本語の読解能力を持つ人を想定していますので、
日本語でのコメントを書いていますが、本来なら英語で書いて、
誰にでも伝わるようにするべきです。

また、コメント以下(同一行)に書かれた内容は
プログラム上では無視されますので、日本語入力(英語等でも可)でいいのです。

ついでにprint( )内の文字列についても説明します。
入力された日本語(ひらがなや漢字等)ですが、
これは「文字」を扱うためのデータ型を使っていますので、
“ ”(クォーテーションマーク)で挟まれていれば日本語で書いてもよいのです。
大事なのは文章を(シングルもしくはダブル)クォーテーションで挟むことです。

JUVET
JUVET

データ型については次回、説明します!


前置きが長くなりましたが、前回の続きからでしたね。
出力を見やすくするための工夫をしていきます。
見出し画像のように、新しいセルに以下のコードを入力しましょう。

# 出力を見やすくするために文字列も記入する
print("割り算の結果(整数): ", 5 // 2)

# 以下は少数を返す(スラッシュ1つ)
print("割り算の結果(少数): ", 5 / 2)


まずはprint( )を使って結果を出力しているのはいいですね。
かっこの中の左側には文字列を表すクォーテーションがあります。
このクォーテーションがどの文章を挟んでいるのか見極めることは重要です。

この例では、
「割り算の結果(整数): 」という部分が挟まれており、
そのあとに「,(カンマ)」でかっこの中身(出力したいもの)を区切っています。
カンマは画面上に小さく表示されるだけなので、
「. (ピリオド)」と間違えやすいです。気をつけましょう。

上のコードではコメントを書き、
その下に「”割り算の結果(整数): “」と入力しています。
そしてカンマの右側に整数の割り算を表すダブルスラッシュの計算があります。

構造としては、先ほどの足し算のコード

print(10 + 20) # 出力されるのは1つの値のみ

と同じですが、
今回(以下のコード)は文字列も一緒に出力している点が異なります。

print("割り算の結果(整数): ", 5 // 2) # print()で2つの値が出力される

これまでは1つの出力だけでしたが、
カンマを使うと、2つ以上の値を同時に出力できます。

つまり、print(文字列, 値)と入力することで、
文字列と計算結果などの値を同時に出力できるようになります。
この書き方はぜひ覚えましょう。

ちなみに2つ目のセルにある割り算のコードについてですが、
見てもらうと分かる通り、
単一のスラッシュを使った割り算を行うと、
計算結果に(整数ではなく)少数が返ってきます。

次はいよいよ文字列の計算に入ります。

文字列も計算してみる


まずは見出し画像のように新しいセルに以下のコードを入力しましょう。

# 変数2つに文字列データ(2つ)を同時に代入する
data_one, data_two = 'stu', 'dy'

print("data_one: ", data_one)
print("data_two: ", data_two)

上から順に見ていきます。
まずはコードについて簡単な説明をするコメントがあります。

続いて以下の部分です。

data_one, data_two = 'stu', 'dy'


これは式の左辺に変数を2つ(data_oneとdata_two)用意し、
それらをカンマで並べています。
式の右辺には代入する2つのデータ(’stu’ と ‘dy’)を並べています。

代入される変数について、
これは式の位置関係と厳密に一致します
したがって、
‘stu’ は data_oneに、 ‘dy’ は data_two に代入されます。

JUVET
JUVET

data_oneと’stu’ はカンマの左側にあり、対応しているということです!右側も同じです!


またお気づきかもしれませんが文字列が、
「“ ”(ダブルクォーテーションマーク)」ではなく、
「‘ ’ (シングルクォーテーションマーク)」で挟まれていることが確認できるかと思います。
実はこれ、どちらでもいいのです。

ただし、以下のように
シングルクォーテーションとダブルクォーテーションを
混ぜて使うことはできませんので、
入力するときは十分に注意しましょう。

# クォーテーションマークは統一しないと構文エラーが発生します
print('study")


さて、まだ一つ目のセルでしたね。
といっても、残りのコードはこれまでに習った内容と同じです。
以下のコードは文字列と(変数の)値を同時に出力しているだけですね。

print("data_one: ", data_one)
print("data_two: ", data_two)


以下は補足説明です。
今回文字列データを同時に複数の変数に代入しましたが、
分かりづらければ、以下のように書いても同じ結果になります。

# 無理して一行におさめなくてもよい
data_one = 'stu'
data_two = 'dy'

print("data_one: ", data_one)
print("data_two: ", data_two)

ただし、このように改行して変数への代入を行うと、
プログラムが下に長くなるので、できるだけ一行におさめるようにしましょう。

JUVET
JUVET

慣れてきたら一行で書いてみてください!


また変数の名前についても補足させてください。
上記の、data_oneのように「_(アンダースコア)」を用いたのは
そのように推奨されているからです。

まず変数名に半角スペースは使えないので、
「data one」のようにつけることはできません。
じゃあ「data-one」のようにハイフンを付けた場合はどうなのかといいますと、
これもつけられません。

どちらも例外を発生しますので、
変数名は基本アンダースコアを使って分かりやすい名前をつけるようにしましょう。

また変数名の先頭文字に数字も使えないことを覚えておくとよいでしょう。

JUVET
JUVET

ルール3: 変数名の特殊文字にはアンダースコアを使う


それでは実際に文字列を足してみましょう。
以下のコードです。

# 変数を足すと文字列同士がくっつきます
print("data_one + data_two: ", data_one + data_two)

このコードも出力の見やすさを考慮し、文字列と値を同時に出力する構造をしています。
カンマの右側には変数同士の計算(足し算)が書かれていますので、
その計算結果が出力されることになります。
以下が出力結果です。

data_one + data_two: study


このように文字列に対して、足し算(加算)を行うと、
文字列が順に加算され、「study」という出力が得られます。
(今回は変数 data_one と data_two に格納されていた文字列が加算されました)

続いて、単独の文字同士「’s’ ‘t’ ‘u’ ‘d’ ‘y’」も加算してみましょう。

print('s' + 't' + 'u' + 'd' + 'y')

結果は上のコードと同じになります。
このように文字列は足し合わせることができることを覚えておきましょう。

JUVET
JUVET

‘s’ のように、文字列が一つの場合は文字とも呼ばれます!

年齢プログラムに挑戦する

input関数の中に書いた文字列が表示されるので、あなたの年齢(数字)を入力します

あなたの年齢に関する簡単なプログラムを書いてみましょう。
今回は入力された値をそのまま出力するプログラムです。
新しいセルに以下のコードを入力してください。

age = input('あなたの年齢を教えてください。')
print('たしかに' + age + '歳に見えますね!')


このコードを入力し、「shift + Enter」で実行すると、
上記見出し画像のように出力部分に、
「あなたの年齢を教えてください。」と表示されます。
これは input( ) の中に書いた内容(文字列)がそのまま出力されたものです。

JUVET
JUVET

input( ) はプログラムを読むユーザー(あなた)からの入力を受け取るときに使います!


ここでは input( ) の使い方だけ見ていきます。
まずはユーザーに見せたい内容(文章)を決め、かっこの中に書きます。
今回は「あなたの年齢を教えてください。」という文字列に決めましたので、
コードを実行すると、この文章が出力部分に表示されます。

さらに上記見出し画像の青枠のように入力を受け付けるフォームも出現しますので、
こちらにあなたの年齢を入力します。
すると、先ほどのコードの変数(age)にその内容が代入されます。

age = input('あなたの年齢を教えてください。')


これは前回の記事に出てきたことですが、
イコールは右辺の値を左辺の変数(今回はage)に代入するときに使うのでした。

最後のコードは本記事のはじめの方で習った内容ですね。
print( )で文字列と値(変数)を同時に出力するコードになります。

print('たしかに' + age + '歳に見えますね!')


これらのコードを入力し、セルの実行を行うと、
以下の画像のような結果が得られます。

あなたが入力した年齢に応じて出力は変わります

このようにinput( ) を使うことで、
ユーザからの入力を受け取ることができることを知っておいてください。

ところで上記の年齢プログラムにはいくつか欠陥があります。
たとえば、入力される値が年齢のような数値である場合には、
こちらが意図したような振る舞いをしますが、
「愛」のような数値ではない値(文字列)を入力した場合には、
こちらが想定していない出力を返します。
「たしかに愛歳に見えますね!」と返すおバカなプログラムになってしまうということです。

こういった不具合とも呼べる状態を避けるために、
input( ) で受け付ける入力内容には十分気をつけなければいけません。
次回はそういった話から、データ関数の説明をし、
最後にまた年齢プログラムv2を実装(コードを書くこと)していきます。

まとめ

本記事では文字列と変数の同時出力について学びました。
print(文字列, 値)のようにカンマを使って入力するのでした。

今回出てきたこのコードの書き方は、
見やすさを重視しており、今後のプログラムを書く上で必須のスキルです。
文字列と一緒に計算結果などを出力することで
見やすいコードが書けるようになるからです。


また2つの変数を一行で代入したい場合にもカンマを使いました。
その際に、変数につける名前に特殊文字を使う場合には
アンダースコアしか指定できないことも説明しました。

今回出てきたルールは以下の通りです。

ルール3: 変数名の特殊文字にはアンダースコアを使う


それから文字列の加算についても学びました。
文字列のクォーテーションマークは揃えないと構文エラーとなるのでした。
そして実は文字列の乗算もできるのですが、
それはまた別の機会で述べることにします。

最後にinput( ) については使い方だけを見てきました。
しかし、入力内容によってはうまく機能しないことを説明したところで
今回は終わりにしています。
次回は、年齢プログラムを改良するところからスタートし、
データ型や関数について詳しく見てから、年齢プログラムv2を実装していきます。

分からないことや上手くいかなかったことがあった場合には
下のコメント欄から質問していただけると
何かしらのアドバイスができるかもしれません。



【P.S.】
この記事が良いと思った場合には、
励みになりますので、ぜひいいねボタンを押して行ってください。
SNSもやっています。フォローしてね 🙂

コメント

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