前提
関数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、測定不能です。
発生している問題・エラーメッセージ
渡される引数が二つの場合のエラー
~\AppData\Local\Temp/ipykernel_5984/4291754440.py in <module> 1 num1 = int(input('一つ目')) 2 num2 = int(input('二つ目')) ----> 3 num3 = int(input('三つ目')) 4 avg,msg = granding(num1,num2,num3) 5 print('平均点は{:.3f}、{}'.format(avg,msg)) ValueError: invalid literal for int() with base 10: ''
該当のソースコード
Python
1def granding(num1,num2,num3): 2 avg = (num1 + num2 + num3) / 3 3 if( avg >=60.0 and num1>=0 and num2>=0 and num3>=0): 4 msg = '合格' 5 return(avg,msg) 6 elif( avg >= 0 and num1>=0 and num2>=0 and num3>=0): 7 msg1 = '不合格' 8 return(avg,msg1) 9 else: 10 msg2 = '測定不能' 11 avg = -1.000 12 return(avg,msg2)
Python
1num1 = int(input('一つ目')) 2num2 = int(input('二つ目')) 3num3 = int(input('三つ目')) 4avg,msg = granding(num1,num2,num3) 5print('平均点は{:.3f}、{}'.format(avg,msg))
試したこと
論理積を追加した。例外処理にavg = -1.000を追加した。前回の指摘通りにピリオドに変更した。
補足情報(FW/ツールのバージョンなど)
Jupter Notebook
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。