前提
ここに質問の内容を詳しく書いてください。
関数grandingで、引数に3つの整数を持っていて、それによって、平均が60.0以上なら「合格」、60.0未満なら「不合格」、渡される引数が足りなかったり、引数のどれかに0未満の数が入っていた際にはー1と「測定不能」となる文字列が返される関数を作成したいです。
実現したいこと
関数grandingという引数である3つの整数を使い、平均点が60以上であれば「合格」、60.0未満であれば「不合格」、渡される引数が足りない場合と引数のどれかに0未満が入っている場合はー1と「測定不能」となるように関数の内部を改善したいです。
[具体例1]
一つ目10
二つ目20
三つ目30
平均点は20.000、不合格です。
[具体例2]
一つ目60
二つ目70
三つ目80
平均点は70.000、合格です。
[具体例3]
一つ目-100
二つ目200
三つ目300
平均点はー1.000、測定不能です。
[具体例4]
一つ目500
二つ目1000
平均点はー1.000、測定不能です。
発生している問題・エラーメッセージ
エラーメッセージ ValueError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_18160/565785266.py in <module> 3 num3 = int(input('三つ目')) 4 avg,msg = granding(num1,num2,num3) ----> 5 print('平均点は{:,3f}、{}'.format(avg,msg)) ValueError: Invalid format specifier
該当のソースコード
Python
1def granding(num1,num2,num3): 2 avg = (num1 + num2 + num3) / 3 3 if( avg >=60.0): 4 msg = '合格' 5 return(avg,msg) 6 elif( avg >= 0 ): 7 msg1 = '不合格' 8 return(avg,msg1) 9 else: 10 msg2 = '測定不能' 11 return(avg,msg2)
上記の関数を改善して、
Python
1num1 = int(input('一つ目')) 2num2 = int(input('二つ目')) 3num3 = int(input('三つ目')) 4avg,msg = granding(num1,num2,num3) 5print('平均点は{:,3f}、{}'.format(avg,msg))
2番目に記載したソースコードで処理したいです。
試したこと
num1 + num 2 + num3を見やすいように、avgにまとめました。
補足情報(FW/ツールのバージョンなど)
Jupter Notebook
エラーが発生している部分に限って言えば、{:.3f} を {:,.3f} に変更してみて下さい。
print('平均点は{:,3f}、{}'.format(avg,msg))
=>
print('平均点は{:,.3f}、{}'.format(avg,msg))
ただ、平均点は 100点以下でしょうから、カンマ区切りは不要かと思いますが。
回答1件
あなたの回答
tips
プレビュー