Pythonの演算子について基本的な書き方を学ぶ。
演算子の種類3選
- 算術演算子
これは足し算・引き算・掛け算・割り算・剰余・べき乗・切り捨て除算のこと。
書き方は他の言語と同じなので割愛。
書くコード
- 割引対象年齢とユーザー年齢を定義
- 割引計算(5年ごとに5%の割引)
- 小数点以下は切り捨て
- 最終料金を計算する
- base_fee x (1 - 割引計算結果)
# ユーザーの年齢とサービスの利用年数を取得する
age = 30
years_of_service = 5
# 基本料金
base_fee = 1000
# 割引計算(5年ごとに5%の割引)
discount_rate = 0.05 * (years_of_service // 5)
# 最終料金の計算
final_fee = base_fee * (1 - discount_rate)
print(f"ユーザーの年齢: {age}歳")
print(f"サービス利用年数: {years_of_service}年")
print(f"基本料金: {base_fee}円")
print(f"割引率: {discount_rate * 100}%")
print(f"最終料金: {final_fee}円")
fとつけているのはf文字列(f-strings)。
これは文字列の前に置くことで文字列中の置換フィールドに変数をそのまま指定できる。便利。
- 比較演算子
2つの値を比べて、結果をbool値で返す。
等しい・等しくない・~より大きい・~より小さい・~以上・~以下、これらを計算できる。
書き方は他の言語と同じなので上に同じく割愛。
書くコード
- 割引対象年齢とユーザー年齢を定義
- 割引対象年齢以上のユーザーは割引するためのチェックをする
- 割引対象は英語でいうとeligible for discountと言うらしい
# ユーザーがサービスの割引対象かどうかをチェックする
# 割引対象年齢
discount_age = 60
# ユーザーの年齢
user_age = 65
# 割引対象のチェック
is_eligible_for_discount = user_age >= discount_age
print(f"ユーザーの年齢: {user_age}歳")
print(f"割引対象年齢: {discount_age}歳以上")
print(f"割引対象かどうか: {'はい' if is_eligible_for_discount else 'いいえ'}")
条件式は出力でも使える。
Pythonで三項演算子を書く場合はこうなる
<true_value> if <condition> else <false_value>
- 論理演算子
比較演算子と同じく、2つの値を比べて、結果をbool値で返す。
論理的な条件を組み合わせるために使う。
and
, or
, not
を使って書いていく。
(&
や|
はビット演算子で使うらしい。今回は割愛する)
書くコード
- ユーザー年齢25歳・学生であること・サービス利用年数3年
- 120%特別オファーの条件を満たす
# ユーザーの情報
user_age = 25
is_student = True
years_of_service = 3
# 条件の定義
age_condition = user_age < 30
student_condition = is_student
service_condition = years_of_service >= 1
# 全ての条件を満たすかどうかをチェック
is_eligible_for_special_offer = age_condition and student_conditon and service_condition
print(f"ユーザーの年齢: {user_age}歳")
print(f"学生かどうか: {'はい' if is_student else 'いいえ'}")
print(f"サービス利用年数: {years_of_service}年")
print(f"特別オファー対象かどうか: {'はい' if is_eligible_for_special_offer else 'いいえ'}")
では、今まで書いてきたコードを使って、ユーザーデータの登録処理で使うようなコードでそれぞれの演算子を確認していく。
演算子を使ったコード
とあるサービスで登録されたユーザーが「割引対象かどうか・特別オファー(仮)のチェック」をするような処理を書いてみる。引数は名前、年齢、学生かどうか、サービス利用期間(年)で指定している。
なお、関数はdefと定義する。:
も忘れずに。
今まで書いてきたコードを全て活用してみる。
def register_user(name, age, is_student, years_of_service):
base_fee = 1000
# 割引計算
discount_rate = 0.05 * (years_of_service // 5)
final_fee = base_fee * (1 - discount_rate)
# 割引対象チェック
discount_age = 60
is_eligible_for_discount = age >= discount_age
# 特別オファーのチェック
age_condition = age < 30
student_condition = is_student
service_condition = years_of_service >= 1
is_eligible_for_special_offer = age_condition and student_condition and service_condition
# 結果を表示する
print(f"名前: {name}")
print(f"年齢: {age}歳")
print(f"学生かどうか: {'はい' if is_student else 'いいえ'}")
print(f"サービス利用年数: {years_of_service}年")
print(f"基本料金: {base_fee}円")
print(f"割引率: {discount_rate * 100}%")
print(f"最終料金: {final_fee}円")
print(f"割引対象かどうか: {'はい' if is_eligible_for_discount else 'いいえ'}")
print(f"特別オファー対象かどうか: {'はい' if is_eligible_for_special_offer else 'いいえ'}")
# 関数を呼び出す
register_user("Bob", 25, True, 3)
結果はこう表示される
名前: Bob
年齢: 25歳
学生かどうか: はい
サービス利用年数: 3年
基本料金: 1000円
割引率: 0.0%
最終料金: 1000.0円
割引対象かどうか: いいえ
特別オファー対象かどうか: はい
あとがき
基本だけど念のためこれもアウトプット。めちゃくちゃ簡潔に書けるのはいいかも。
そしてPythonで関数を書くときはインデントがめちゃくちゃ重要。
変数とデータ型で触れていなかった、「引数」という概念が出てきたのでここで触れておく。
引数(parameter, argument)は関数で定義する変数のこと。関数やメソッドなどとやりとりするための特別な変数。とりあえずはこれだけ覚えておけばいい。
(仮引数とか実引数とか紛らわしい名前あるけど無視してOK)
…と思ったけど一応書いとく。
- 仮引数(parameter):関数を定義するときに使われる「変数」
- 実引数(argument):関数を呼び出すときに渡す「具体的な値」
例えば、「ジムの体組成計で体内の数値を調べる」というケースで考える。
筋肉量が70kgだとすると…
筋肉量という項目はparameter、体重の数値70はargument、と理解すればOK。
サンプルコードも書いておきますか。
def measure_body_composition(muscle_mass):
# muscle_massはparameter
print(f"私の筋肉量は{muscle_mass}kgです。")
# argumentとして70を渡す
measure_body_composition(70)
> 私の筋肉量は70kgです。
初学者に引数の概念を教えるならこれが一番わかりやすい(気がする)。
Memo on programming by Tomo.