割り勘して小数点が出るっていうのは・・・
だめですよね~(端数が出ている前回の記事)整数で割り勘できるように改良しよう!
コマンドラインから引数を受け取る
コマンドラインに「金額を入力」と表示され、金額を入力するような対話型にしました
input()
で入力した値を受け取れます
print('割り勘する合計金額を入力してください') total_amount = int(input()) # 引数は文字列で渡される
整数の割り算
divmod(arg1,arg2)
という割り算の商(整数)とあまりを返してくれる便利な関数があった!
ちなみに「商とあまりを返す」といった複数の返り値はタプルという型で返ってきました
Pythonのタプルとは一体?わかりやすく解説をしてみた
「要素の変更ができないリスト=finalなリスト」と覚えておきます
関数・if文 今知っているものを駆使した!
割り勘できてるっぽい!!!(チェック甘いからあんまりテストしない)
import sys def warikan(amount, member): """ 割り勘実行 @param amount 金額 @param member 人数 @return calc_result 割り勘金額, あまり """ calc_result = divmod(amount, member) return calc_result def disp_result(min ,max, member): """ 結果表示 @param min 割り勘金額 @param max 割り勘金額+あまり """ print('安いほう {}人:{}円'.format(member, min)) print('高いほう 1人:{}円'.format(max)) def main(): # 合計金額 print('割り勘する合計金額を入力してください') total_amount = int(input()) # 引数は文字列で渡される if total_amount<2: print('割り勘は2円以上で行ってください') sys.exit() # 人数 print('人数を入力してください') member = int(input()) if member<2: print('割り勘には2人以上が必要です') sys.exit() print('スポンサーはいますか?[Y/N]') sponsor = input() if sponsor == 'Y': print('スポンサーが出す合計金額を入力してください') sponsor_amount = int(input()) if total_amount<sponsor_amount: print('スポンサー金額が合計金額を超えています') sys.exit() print('スポンサーの人数を入力してください') sponsor_member = int(input()) if sponsor_member<1: print('スポンサーには1人以上を入力してください') sys.exit() # 割り勘する金額と人数 wari_amount = total_amount-sponsor_amount wari_member = member-sponsor_member if wari_member<2: print('割り勘には2人以上が必要です') sys.exit() result = warikan(wari_amount, wari_member) disp_result(result[0], result[0]+result[1], wari_member-1) elif sponsor == 'N': result = warikan(total_amount, member) disp_result(result[0], result[0]+result[1], member-1) else: print('YまたはNを入力してください') # メイン関数実行 main()
参考記事 Pythonでコマンドライン引数を受け取る Pythonのdivmodで割り算の商と余りを同時に取得 Pythonでプログラムを終了させる:sys.exit() Pythonスクリプトの書き方(4パターン) Python コメント、Pydoc