【基礎編④】プログラム作成(for文、if文)

今回はリストとループ処理を使って、簡易レジのプログラムをスマートにしてみます。
具体的にはfor文を使用します。他にもwhile文などのループ処理があります。

リストとループ処理(for文)の基本

# リストはデータの型の一種であり、ひとつの変数の中に複数の値を格納できます。
# 定義する際は以下のように[]を使います。
list_fruits = ["apple", "orange"]

# リストの中身を使うときは、変数の後に[番号]をつけます。※番号は0から始まります。
print(list_fruits[0])
print(list_fruits[1])

# リストと組み合わせてよく使うのがループ処理のfor文です。
# for文を使用すると、リストの中身をひとつずつ順番に取り出すことができます。
# 例えば、以下のように使用します。
# for文についても末尾の[:]と、中身となる行にはインデントが必要となります。
for fruit in list_fruits:
    print(fruit)

# list_fruitsの中身をひとつずつfruitという変数に格納して、printで出力しています。

# これまでにVBAなどを使ったことがある人は以下の表現のほうが親しみやすいかもしれません。
for i in range(2):
    print(list_fruits[i])

# range関数は数字のリストを作成するための関数です。
# 例えばrange(2)はリスト[0, 1]を作成するため、iを0から1まで(2つ分)繰り返す処理となります。

目次(クリックするとジャンプします)

リストとループ処理(for文)の活用

簡易レジに対して、リストとループ処理を活用してみます。

def main():
    appleCount = input("りんごの個数を入力してください: ")
    orangeCount = input("みかんの個数を入力してください: ")
    
    # 各入力をリスト変数で定義します。
    count = [int(appleCount), int(orangeCount)]
    price = [200, 100]
    setCount = [3, 5]
    setPrice = [500, 450]
    # りんごとみかんのそれぞれの合計金額を入れるリストを作成しておきます。
    totalPrice = []
    
    for i in range(2):
        result = calc(count[i], price[i], setCount[i], setPrice[i])
        # append関数を使用して、リストtotalPriceに結果を追加します
        totalPrice.append(result)
    
    # sum関数を使うと、リストの数値の総和を出力できます。
    sum_totalPrice = sum(totalPrice)
    
    print(f"合計金額は{sum_totalPrice}円です。")
    # 出力に「f文字列」というものを活用してみました。
    # 日本語と変数を組み合わせて出力する際におすすめの方法です。
    # 通常の文字列は""or''で囲む必要があり、その前にfをつけるとf文字列となります。
    # f文字列のメリットは中に変数を入れることができることです。変数は{}で囲みます。

def calc(count, price, setCount, setPrice):
    totalprice = count // setCount * setPrice + count % setCount * price
    return totalprice

main()

コメントが多いのでわかりにくいかもしれませんが、少しスッキリしてきたでしょうか。
次は、条件分岐(if文)というものを使用して、レジ袋必要有無の確認機能を追加してみます。

条件分岐(if文)の基本

# if文は変数の中身に応じて、処理を変えたい場合などに使用します。
# 例えば・・・
# レジ袋が必要な場合、yを入力してもらいます。
confirm_bag = input("レジ袋が必要な場合は y を入力してください。: ")

# 変数confirm_bagに文字列"y"が入っていたら、処理を実行します。
# 変数confirm_bagが文字列"y"以外の場合、なにも処理は行われません。
if confirm_bag == "y":
    print("レジ袋あり")

条件分岐(if文)の活用

簡易レジに対して、条件分岐(if文)を活用してみます。

def main():
    appleCount = input("りんごの個数を入力してください: ")
    orangeCount = input("みかんの個数を入力してください: ")
    
    count = [int(appleCount), int(orangeCount)]
    price = [200, 100]
    setCount = [3, 5]
    setPrice = [500, 450]
    totalPrice = []
    
    for i in range(2):
        result = calc(count[i], price[i], setCount[i], setPrice[i])
        totalPrice.append(result)
    
    sum_totalPrice = sum(totalPrice)
    
    # レジ袋が必要な場合は、yを入力してもらいます。
    confirm_bag = input("レジ袋が必要な場合は y を入力してください。(1枚5円): ")
    bagPrice = 5
    # yが入力された場合、合計金額にレジ袋の代金を加算します。
    if confirm_bag == "y":
        sum_totalPrice = sum_totalPrice + bagPrice

    print(f"合計金額は{sum_totalPrice}円です。")

def calc(count, price, setCount, setPrice):
    totalprice = count // setCount * setPrice + count % setCount * price
    return totalprice

main()

ここまでで簡易的なレジのプログラムを少しずつ改良できました。
次回はExcelとの連携を行っていきます。