Site icon imageTomoMemo.dev

Memo on programming. Provided by Tomo with passion.

Pythonの基本構文「演算子」

Icon in a callout block
Python 100Days Challenge Day4

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.

Powered by Tomo with passion.