上級Python開発コース
チャプター
>
レベル
例外処理
例外クラスのカスタマイズ
目的
収集された雨水を検証し、例外クラスをカスタマイズすることで、正しく処理および転送されていることを確認する。
屋根全体の端には、収集された雨水の貯水槽があります。この水はろ過され、さまざまな目的で建物内に転送されます。上部の壁にあるいくつかのバルブが水の流れる圧力を制御しており、一方で最後の物置にはさまざまなウォーターヒーターが設置されています。機械の操作は一筋縄ではいきませんが、エラーコードを明確にし、効果的な対策を設定することで、操作を効率化することが可能です。これは、カスタム例外用に作成した例外クラスをカスタマイズすることで実現されます.
コードエディタには2つのカスタム例外クラスが用意されており、それらを使用する能力は、遭遇する機械の問題のトラブルシューティングにとって不可欠です。最初の例外は水圧をトラブルシューティングするためのものです。これは、複合施設に水が正しく流れているか、または水圧を調整する必要があるかを確認するためにバルブと共に使用されることを意図しています。水圧が 100 未満または 300 を超える場合、例外が異なる動作を行います。ユーザーは水圧を引数として提供する必要があります。作動すると、エラーコードとメッセージを含むカスタムポップアップが表示されます.
class PressureError(Exception):
def __init__(self, pressure, message="Water pressure is offset, pressure is: ", error_code=404):
self.pressure = pressure
self.message = message
self.error_code = error_code
super().__init__(self.message)
async def __str__(self):
await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.pressure))
if self.pressure < 100:
return ("Valve has been closed")
if self.pressure > 360:
return ("Valve has been opened")
2つ目のカスタム例外クラスは、ウォーターヒーターの温度を調整するためのものです。温度が低すぎたり高すぎたりする場合、エラーを修正するために、新しい温度を引数として入力する必要があります.
class TemperatureError(Exception):
def __init__(self, temp, message="Temperature is not appropiate, enter new temperature: ", error_code=808):
self.temp = temp
self.message = message
self.error_code = error_code
super().__init__(self.message)
async def __str__(self):
await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.temp))
return ("Temperature Corrected")
まずは、緑のカーペット上にあるライト付きのXマークまで歩き、バルブの付いたタンクに向かいます。そこには、貯水槽から汲み上げられる水の圧力を調整する4つのタンクがあります。4つの定数変数、green_pressure、red_pressure、blue_pressure、orange_pressure は、それぞれ対応する色のカーペットのタンクの圧力を保持しています.
すべてのライト付きXマークで、try/except および else のコードブロックシーケンスを使用して、各タンクの圧力が適切かどうかを検証してください。もし圧力が 100 未満または 300 を超える場合、カスタム例外 PressureError を発生させ、圧力を引数として渡してください。作動するとエラーコードが表示され、修正が促されます。そうでなければ、else 節が実行され、タンク内の圧力が適正であることが確認されます。例えば:
try: if green_pressure < 100 or green_pressure > 360: raise PressureError(green_pressure) except PressureError as x: player.speak(x) else: player.speak( "Pressure is appropriate" )
これを、各色のカーペットに対応する定数変数を使用して、すべてのライト付きXマークで実施し、必要に応じて圧力バルブを検証または調整してください。
作業が完了したら、金色のXマークまで歩き、open() 関数を使ってウォーターヒーターがある物置にアクセスします。物置内に入ったら、内部の金色のXマークまで歩いて、read() 関数を使ってカウンターに貼られたメモを読み取ってください。このメモには、各ウォーターヒーターの理想的な温度に関する情報が記載されています。
各温度に関する情報を得たら、紫のカーペット上の暗いXマークに向かいます。ここでは、try/except および else のコードシーケンスを使用して、ウォーターヒーターの温度が正しく設定されているかを検証します。さらに、紫のカーペットに関連する4つの定数変数、purple_temperature、yellow_temperature、pink_temperature、white_temperature が存在します.
このシーケンスでは、温度が 100 未満であるかを検証し、もしそうであれば TemperatureError 例外を発生させます。カスタム例外として、この例外は引数を受け取るため、メモに記載されていた温度を入力して問題を正しく修正する必要があります。例えば:
try: if purple_temperature < 100: raise TemperatureError(120) except TemperatureError as x: player.speak(x) else: player.speak( "Temperature is ok" )
各ウォーターヒーターについて、対応する色のカーペットに関連付けられた定数変数を使用して、すべてのXマークで同様のシーケンスを実行し、レベルを完了させてください。