Python / LESSON 03 / PY03

Python:演算子と文字列操作(f-string)

1学習の目的

2基礎解説

分類演算子例 → 結果
算術+ - * / // % **7 // 2 → 3, 7 % 2 → 1, 2 ** 3 → 8
比較== != < > <= >=5 >= 3 → True
論理and or notTrue and False → False
✅ 覚えるべき重要ポイント
  1. // は切り捨て除算、% は余り。「偶数判定 n % 2 == 0」は超頻出。
  2. = は代入、== は比較。混同はエラーやバグの定番。
  3. f-stringは f"合計は{total}円" のように {} に変数や式を埋め込める。
  4. f-stringの書式指定:{price:,} で3桁カンマ、{rate:.1%} でパーセント表示。
  5. and は「両方True」、or は「どちらかTrue」。条件の組み立ての基礎。

現場使用例:ログ出力 f"[{now}] user={uid} status={code}"、帳票の金額表示 f"{sales:,}円"、在庫判定 stock > 0 and is_open

price = 1234567
rate = 0.083
name = "鈴木"

print(f"{name}さんの売上は{price:,}円です")   # 3桁カンマ
print(f"達成率は{rate:.1%}")                  # 8.3%
print(f"来月目標: {price * 1.1:,.0f}円")      # 式も書ける

3基本ドリル(10問)

PY03-D01 17 を 5 で割った「商(整数)」と「余り」をこの順で出力せよ。 コーディング★☆☆無料
期待される結果

出力が 3, 2 の順

ヒント

// と % を使う。

模範解答
print(17 // 5)
print(17 % 5)
解説

// は切り捨て除算。「n個をm人で分けると1人何個で何個余る?」の定番計算。

PY03-D02 2 ** 10 の結果はどれか。
A. 20 B. 100 C. 1024 D. 12
選択★☆☆無料
期待される結果

解答 == C

ヒント

** は累乗。

模範解答
C
解説

2の10乗=1024。データ容量計算(KB/MB)などで登場。

PY03-D03 name = "山田" のとき、f-stringで「こんにちは、山田さん」と出力するコードを完成させよ。 穴埋め★☆☆無料
コード
name = "山田"
print(____"こんにちは、{name}さん")
期待される結果

出力 == こんにちは、山田さん

ヒント

クォートの直前に1文字。

模範解答
print(f"こんにちは、{name}さん")
解説

f を付け忘れると {name} がそのまま表示される。初心者の定番ミス。

PY03-D04 print(10 == 10.0) の出力はどれか。
A. True B. False C. エラー D. 10
選択★☆☆無料
期待される結果

解答 == A

ヒント

== は「値」の比較。

模範解答
A
解説

int と float でも値が等しければ True。型まで区別したい場合は type() を併用する。

PY03-D05 n = 8 が偶数かどうかを表す bool を出力せよ(if文は使わない)。 コーディング★☆☆無料
期待される結果

出力 == True

ヒント

2で割った余りが0なら偶数。

模範解答
n = 8
print(n % 2 == 0)
解説

偶数判定 n % 2 == 0 は暗記レベルの頻出イディオム。

PY03-D06 price = 1980000 を f-string の書式指定で「1,980,000円」と3桁カンマ付きで出力せよ。 コーディング★★☆無料
期待される結果

出力 == 1,980,000円

ヒント

{price:,} の形。

模範解答
price = 1980000
print(f"{price:,}円")
解説

金額表示のカンマ整形は帳票・レポート作成で必ず使う。

PY03-D07 print(True and False or True) の出力はどれか。
A. True B. False C. エラー D. None
選択★★☆無料
期待される結果

解答 == A

ヒント

and が or より先に評価される。

模範解答
A
解説

(True and False) or True → False or True → True。優先順位に迷ったらカッコを付けるのが実務の作法。

PY03-D08 rate = 0.256 を「25.6%」と表示するコードを完成させよ。 穴埋め★★☆無料
コード
rate = 0.256
print(f"{rate:____}")
期待される結果

出力 == 25.6%

ヒント

小数1桁のパーセント書式。

模範解答
print(f"{rate:.1%}")
解説

:.1% は「100倍して%を付け小数1桁」。達成率・進捗率の表示で頻出。

PY03-D09 score = 85 のとき「60以上 かつ 100以下」であるかの bool を出力せよ。 コーディング★★☆無料
期待される結果

出力 == True

ヒント

and で2条件をつなぐ。Pythonでは 60 <= score <= 100 とも書ける。

模範解答
score = 85
print(60 <= score <= 100)
解説

範囲チェックの連鎖比較はPythonならではの簡潔な書き方。入力バリデーションで多用。

PY03-D10 s = "abc" のとき s * 3 の結果はどれか。
A. エラー B. abcabcabc C. abc3 D. 9
選択★★☆無料
期待される結果

解答 == B

ヒント

文字列に * を使うと?

模範解答
B
解説

文字列 * 整数 は繰り返し。区切り線 "-" * 30 のような使い方が実務で便利。

4実践シナリオ(5問)

PY03-S01 【領収書の整形】item = "会議用モニター", price = 45800 から「会議用モニター:45,800円(税込50,380円)」と1行で出力せよ。税率は10%、税込は整数。 コーディング★★☆無料
期待される結果

出力が完全一致

ヒント

f-string内で int(price * 1.1) と計算できる。

模範解答
item = "会議用モニター"
price = 45800
print(f"{item}:{price:,}円(税込{int(price * 1.1):,}円)")
解説

f-string内での計算+カンマ書式の組み合わせ。帳票系処理の実戦形。

PY03-S02 【シフト計算】総勤務分数 total_min = 500 を「8時間20分」の形式で出力せよ。 コーディング★★☆無料
期待される結果

出力 == 8時間20分

ヒント

時間は // 60、分は % 60。

模範解答
total_min = 500
print(f"{total_min // 60}時間{total_min % 60}分")
解説

「// と % のペアで単位換算」は時間・金種計算・ページ割りなど応用範囲が広い。

PY03-S03 【ログ出力】user_id = 1024, status = 200 から「[INFO] user=1024 status=200 ok=True」と出力せよ。ok はstatusが200と等しいかの比較結果を埋め込むこと。 コーディング★★☆無料
期待される結果

出力が完全一致

ヒント

{status == 200} と式を直接埋め込める。

模範解答
user_id = 1024
status = 200
print(f"[INFO] user={user_id} status={status} ok={status == 200}")
解説

実際のアプリログとほぼ同じ形。f-stringに比較式を埋め込むテクは監視ログで多用。

PY03-S04 【割り勘アプリ】合計 total = 17800 円を people = 7 人で割り勘する。1人あたりの支払額(100円単位に切り上げ)と幹事の負担額を「1人:2600円/幹事負担:2200円」の形式で出力せよ。 コーディング★★★無料
期待される結果

出力 == 1人:2600円/幹事負担:2200円

ヒント

1人分の素の額 = total // people = 2542 → 100円単位切り上げ 2600。幹事 = total - 2600 * (people - 1)。

模範解答
total = 17800
people = 7
per = -(-(total // people) // 100) * 100
organizer = total - per * (people - 1)
print(f"1人:{per}円/幹事負担:{organizer}円")
解説

-(-x // n) は切り上げ除算の定番イディオム。演算子だけで実務ロジックが組めることを体感する問題。

PY03-S05 【営業成績サマリー】name = "高橋", target = 3000000, actual = 2565000 から次の1行を出力せよ。
「高橋さん:実績2,565,000円/目標比85.5%/達成:False」
目標比は actual / target をパーセント小数1桁で、達成は actual >= target の比較結果。
コーディング★★★無料
期待される結果

出力が完全一致

ヒント

{actual / target:.1%} と {actual >= target}。

模範解答
name = "高橋"
target = 3000000
actual = 2565000
print(f"{name}さん:実績{actual:,}円/目標比{actual / target:.1%}/達成:{actual >= target}")
解説

カンマ書式・パーセント書式・比較式の埋め込みを1行に統合。営業レポート自動生成の最小形。

5仕上げ課題

PY03-FINAL 【月次請求書サマリーの生成】以下の変数から請求サマリーを整形出力するスクリプトを書け。
client = "株式会社アオゾラ"/unit_price = 8500/hours = 127/tax_rate = 0.1

出力仕様(4行):
=== 請求サマリー ===
宛先:株式会社アオゾラ 御中
小計:1,079,500円(8,500円 × 127h)
税込合計:1,187,450円(税率10.0%)


条件:金額はすべて3桁カンマ、税率は :.1% 書式、税込は整数に切り捨てること。
期待される結果

出力4行が完全一致

ヒント

小計 = unit_price * hours。税込 = int(小計 * (1 + tax_rate))。

模範解答
client = "株式会社アオゾラ"
unit_price = 8500
hours = 127
tax_rate = 0.1

subtotal = unit_price * hours
total = int(subtotal * (1 + tax_rate))

print("=== 請求サマリー ===")
print(f"宛先:{client} 御中")
print(f"小計:{subtotal:,}円({unit_price:,}円 × {hours}h)")
print(f"税込合計:{total:,}円(税率{tax_rate:.1%})")
解説

請求書・見積書の自動生成は事務自動化の最初の成果物になりやすい。書式指定を組み合わせた整形出力ができれば本項目は合格。