データを読み込み中...

この教材では、前回学んだ基礎知識をさらに発展させ、より実践的なプログラミングに必要な機能を学びます。
学習内容:
前回の教材では様々な演算子を学びました。しかし、実際のプログラムでは「複数の条件を同時に満たす」ことを判定したい場合が多くあります。
例えば、映画館の入場条件を考えてみましょう
このように「AかつB」「AまたはB」といった条件を表現するのが論理演算子です。
論理演算子はTrue,Falseで表現され、条件が真であるときはTrue,偽である場合はFalseになります。
andは、すべての条件がTrueのときだけTrueを返します。
# 基本的な使い方
print(True and True) # True
print(True and False) # False
print(False and False) # False
# 実際の例:大人かつ免許を持っている
age = 25
has_license = True
can_drive = (age >= 18) and has_license
print(can_drive) # True
# 年齢は満たしているが免許がない場合
age = 20
has_license = False
can_drive = (age >= 18) and has_license
print(can_drive) # False
andの動作イメージ:
両方の条件を満たして初めてTrueになります。片方でもFalseなら結果はFalseです。
# 実用例:レストランの入店可否判定
age = 22
has_reservation = True
is_full = False
# 20歳以上で、予約があり、満席でない場合のみ入店可能
can_enter = (age >= 20) and has_reservation and (not is_full)
print(can_enter) # True
orは、いずれかの条件がTrueならTrueを返します。
# 基本的な使い方
print(True or False) # True
print(False or True) # True
print(False or False) # False
# 実際の例:週末または祝日なら休み
is_saturday = False
is_sunday = True
is_holiday = False
is_day_off = is_saturday or is_sunday or is_holiday
print(is_day_off) # True(日曜日なので休み)
orの動作イメージ:
どれか1つでも条件を満たせばTrueになります。すべてがFalseのときだけFalseです。
# 実用例:割引適用の判定
is_student = False
is_senior = False
is_member = True
# 学生、シニア、会員のいずれかなら割引適用
has_discount = is_student or is_senior or is_member
print(has_discount) # True(会員なので割引あり)
notは、条件を反転させます。TrueをFalseに、FalseをTrueにします。
# 基本的な使い方
print(not True) # False
print(not False) # True
# 実際の例:雨が降っていなければ外出する
is_raining = False
can_go_out = not is_raining
print(can_go_out) # True
# 在庫がない場合のメッセージ
stock = 0
is_out_of_stock = not (stock > 0)
print(is_out_of_stock) # True
複数の論理演算子を組み合わせることで、より複雑な条件を表現できます。
# 例:ゲームセンターの入場条件
age = 16
has_parent = True
is_student = True
# 条件:18歳以上、または(16歳以上で保護者同伴かつ学生)
can_enter = (age >= 18) or ((age >= 16) and has_parent and is_student)
print(can_enter) # True
括弧を使って条件をグループ化すると、意図が明確になります。
# クーポン適用条件の複雑な例
total_price = 5000
is_first_purchase = False
is_member = True
is_campaign_period = True
# 条件:
# (初回購入または会員)かつ キャンペーン期間中 かつ 3000円以上
can_use_coupon = (
(is_first_purchase or is_member) and
is_campaign_period and
(total_price >= 3000)
)
print(can_use_coupon) # True
文字列同士を+演算子で結合できます。これは、メッセージを組み立てる際に非常によく使います。
# 基本的な結合
first_name = "太郎"
last_name = "山田"
full_name = last_name + first_name
print(full_name) # 山田太郎
# スペースや記号を含めた結合
greeting = "こんにちは、" + full_name + "さん!"
print(greeting) # こんにちは、山田太郎さん!
# 複数の文字列を結合
address = "東京都" + "渋谷区" + "神南" + "1-1-1"
print(address) # 東京都渋谷区神南1-1-1
文字列に*演算子を使うと、その文字列を繰り返すことができます。
# 基本的な繰り返し
print("=" * 20) # ====================
# 見やすい区切り線を作る
separator = "-" * 30
print(separator)
print("重要なお知らせ")
print(separator)
# パターンを繰り返す
pattern = "♪ "
song = pattern * 5
print(song) # ♪ ♪ ♪ ♪ ♪
なぜ変換が必要なのか
プログラムでは、数値として扱いたい場合と、文字として扱いたい場合があります。特に、ユーザーから入力を受け取る際には、入力は常に文字列として扱われるため、変換が必要になります。
# 数値を文字列に変換(str関数)
age = 25
message = "私は" + str(age) + "歳です"
print(message) # 私は25歳です
# 変換しないとエラーになる例
# message = "私は" + age + "歳です" # エラー!
# 文字列を整数に変換(int関数)
number_str = "100"
number = int(number_str)
result = number + 50
print(result) # 150
# 文字列を小数に変換(float関数)
price_str = "199.99"
price = float(price_str)
tax = price * 0.1
print(tax) # 19.999
変換時の注意点
# 数値として解釈できない文字列は変換できない
# bad_number = int("abc") # エラー!
# 小数点を含む文字列をintで変換しようとするとエラー
# number = int("3.14") # エラー!
# 正しくはfloatを使う
number = float("3.14")
print(number) # 3.14
文字列に値を埋め込む方法として、+での結合よりも読みやすく、柔軟なformat()メソッドがあります。
# 基本的な使い方
name = "田中"
age = 30
# {}の中に値が順番に入る
message = "名前: {}, 年齢: {}".format(name, age)
print(message) # 名前: 田中, 年齢: 30
# インデックスを指定して順番を変える
message = "{1}歳の{0}さん".format(name, age)
print(message) # 30歳の田中さん
# 同じ値を複数回使う
message = "{0}さん、{0}さん、こんにちは!".format(name)
print(message) # 田中さん、田中さん、こんにちは!
名前を指定した書き方
# 変数名を指定すると、より読みやすくなる
message = "{name}さんは{age}歳です".format(name="山田", age=25)
print(message) # 山田さんは25歳です
# 実用例:レシートの表示
item = "リンゴ"
price = 150
quantity = 3
total = price * quantity
receipt = """
商品名: {item}
単価: {price}円
数量: {quantity}個
合計: {total}円
""".format(item=item, price=price, quantity=quantity, total=total)
print(receipt)
数値のフォーマット指定
# 小数点以下の桁数を指定
pi = 3.14159265359
print("円周率: ".format(pi)) # 円周率: 3.14
# 金額を3桁区切りで表示
price = 1234567
print("価格: 円".format(price)) # 価格: 1,234,567円
# 桁数を揃えて表示
for i in range(1, 11):
print("No.".format(i)) # No.001, No.002, ...
print()は、画面に文字列や値を表示するための関数です。基本的な使い方は前回学びましたが、さらに便利な使い方を見ていきましょう。
# 複数の値を一度に表示
name = "田中"
age = 25
height = 175.5
print("名前:", name, "年齢:", age, "身長:", height)
# 名前: 田中 年齢: 25 身長: 175.5
区切り文字を変更する
デフォルトでは、複数の値はスペースで区切られますが、sepパラメータで変更できます。
# カンマで区切る
print("リンゴ", "バナナ", "オレンジ", sep=", ")
# リンゴ, バナナ, オレンジ
# ハイフンで区切る
print("2025", "01", "15", sep="-")
# 2025-01-15
# 区切り文字なし
print("Hello", "World", sep="")
# HelloWorld
改行を制御する
デフォルトでは、print()は最後に改行を入れますが、endパラメータで変更できます。
# 改行せずに続けて表示
print("処理中", end="...")
print("完了!")
# 処理中...完了!
# ローディング表示の例
for i in range(5):
print(".", end="")
print(" 完了!")
# ..... 完了!
input()は、ユーザーからキーボード入力を受け取るための関数です。これを使うことで、プログラムがユーザーと対話できるようになります。
# 基本的な使い方
name = input("名前を入力してください: ")
print("こんにちは、" + name + "さん")
# 実行例:
# 名前を入力してください: 太郎
# こんにちは、太郎さん
重要な注意点
input()で受け取った値は、常に文字列型(str)です。数値として使いたい場合は、変換が必要です。
# 年齢を入力してもらう
age_str = input("年齢を入力してください: ")
age = int(age_str) # 文字列を整数に変換
next_year_age = age + 1
print("来年は" + str(next_year_age) + "歳ですね")
# 1行にまとめることもできる
height = float(input("身長を入力してください(cm): "))
print("身長はcmです".format(height))
実用的な入力処理の例
# ショッピングの合計金額計算
print("=== お買い物の合計金額計算 ===")
item1_price = int(input("商品1の価格: "))
item1_quantity = int(input("商品1の個数: "))
item2_price = int(input("商品2の価格: "))
item2_quantity = int(input("商品2の個数: "))
# 合計金額を計算
total = (item1_price * item1_quantity) + (item2_price * item2_quantity)
# 税込み金額を計算(消費税10%)
tax = total * 0.1
total_with_tax = total + tax
# 結果を表示
print("\n=== 会計結果 ===")
print("小計: {}円".format(total))
print("消費税: 円".format(tax))
print("合計: 円".format(total_with_tax))
以下の要件を満たすプログラムを作成してください。
要件
ageに年齢(例: 22)を代入するis_studentに学生かどうか(例: True)を代入するincomeに年収(例: 0)を代入するstudent_discountに代入するtax_exemptに代入するstudent_discountとtax_exemptの両方を画面に表示する期待する出力例
True
True
ヒント
income < 2000000で判定できます以下の要件を満たすプログラムを作成してください。
要件
last_nameに姓(例: "佐藤")を代入するfirst_nameに名(例: "花子")を代入するfull_nameに代入するageに年齢(例: 28)を代入する期待する出力例
====================
私の名前は佐藤花子です
年齢は28歳です
====================
ヒント
"=" * 20のように書けますstr()を使います以下の要件を満たすプログラムを作成してください。
要件
product_nameに商品名(例: "ノートPC")を代入するpriceに価格(例: 89800)を代入するstockに在庫数(例: 5)を代入するis_availableに代入する期待する出力例
商品名: ノートPC
価格: 89800円
在庫: 5個
購入可能: True
ヒント
以下の要件を満たすプログラムを作成してください。
要件
priceに格納するquantityに格納するhas_free_shippingに代入する期待する出力例
商品の価格を入力してください: 2500
購入個数を入力してください: 5
小計: 12500円
消費税: 1250円
合計: 13750円
送料無料: True
ヒント
小計 * 0.1で計算できますこの教材では、以下の内容を学習しました:
+で文字列を結合できる*で文字列を繰り返せるこれで、変数、演算子、入出力といった基本的な要素が揃いました。次の教材では、これらを使って「条件分岐」を学び、プログラムに判断させる方法を習得します。演習問題をしっかり解いて、次に進みましょう。