ホームページ >バックエンド開発 >Python チュートリアル >奨学金の資格基準を決定するための多段階の意思決定システムを設計します。
奨学金の資格基準を決定するために使用できる if-else ステートメントを使用して、多層の意思決定システムを設計します。このシステムでは、成績、課外活動、経済的ニーズなどの複数の要素を考慮する必要があります。
成績、課外活動、経済的ニーズに基づいて奨学金の資格を決定する多層的な意思決定システムを設計するには、奨学金の金額を評価して割り当てるための構造化されたアプローチが必要です。ここでは、if-else ステートメントを使用して意思決定システムを作成する方法を段階的に説明します。
def scholarship(financial_cond, extra_act, grades): if financial_cond >=80: if extra_act >=80: if grades >=80: return 5000 if grades>= 60 and grades <80: return 3000 if grades>= 40 and grades <60: return 2000 if extra_act >= 60 and extra_act < 80: if grades >=80: return 4000 if grades>= 60 and grades <80: return 2000 if grades>= 40 and grades <60: return 1000 if extra_act >= 40 and extra_act <60: if grades >=80: return 3000 if grades>= 60 and grades <80: return 1000 if grades>= 40 and grades <60: return 000 if financial_cond >=60 and financial_cond <80: if extra_act >=80: if grades >=80: return 4000 if grades>= 60 and grades <80: return 2000 if grades>= 40 and grades <60: return 1000 if extra_act >= 60 and extra_act < 80: if grades >=80: return 3000 if grades>= 60 and grades <80: return 1000 if grades>= 40 and grades <60: return 0000 if extra_act >= 40 and extra_act <60: if grades >=80: return 2000 if grades>= 60 and grades <80: return 0000 if grades>= 40 and grades <60: return 000 if financial_cond >= 40 and financial_cond <60: if extra_act >=80: if grades >=80: return 3000 if grades>= 60 and grades <80: return 1000 if grades>= 40 and grades <60: return 000 if extra_act >= 60 and extra_act < 80: if grades >=80: return 2000 if grades>= 60 and grades <80: return 000 if grades>= 40 and grades <60: return 000 if extra_act >= 40 and extra_act <60: if grades >=80: return 1000 if grades>= 60 and grades <80: return 000 if grades>= 40 and grades <60: return 000 else: return 0 financial_cond = float(input('Enter financial condition in 1 to 100 ')) extrac_act = float(input('Enter the extracurricular participation in 1 to 100 ')) grades= float(input('Enter the grades of the student ')) print(scholarship(financial_cond, extrac_act, grades))
financial_cond = float(input('Enter financial condition in 1 to 100 ')) extrac_act = float(input('Enter the extracurricular participation in 1 to 100 ')) grades= float(input('Enter the grades of the student ')) def scholarship(): if financial_cond >= 80 and extrac_act >= 80 and grades >= 80: return 10000 elif financial_cond >= 80 and extrac_act >= 80 and grades >= 60 and grades <80: return 5000 elif financial_cond >= 80 and extrac_act >= 80 and grades >= 40 and grades < 60: return 2000 elif financial_cond >= 80 and extrac_act >= 60 and extrac_act < 80 and grades >= 80: return 5000 elif financial_cond >=80 and extrac_act >=60 and extrac_act < 80 and grades >= 60 and grades < 80: return 2000 elif financial_cond >= 80 and extrac_act >=50 and extrac_act < 60 and grades >= 60 and grades < 80: return 1000 elif financial_cond >= 60 and financial_cond < 80 and extrac_act >= 80 and grades >=80: return 5000 elif financial_cond >=60 and financial_cond < 80 and extrac_act >=60 and extrac_act < 80 and grades >= 80: return 2000 elif financial_cond >=60 and financial_cond < 80 and extrac_act >= 60 and extrac_act < 80 and grades >= 60 and grades < 80: return 1000 else: return 0 scholarship()
def scholarship(financial_cond, extra_act, grades): if financial_cond >= 80: return high_financial(extra_act, grades) elif financial_cond >= 60: return medium_financial(extra_act, grades) elif financial_cond >= 40: return low_financial(extra_act, grades) else: return 0 def high_financial(extra_act, grades): if extra_act >= 80: if grades >= 80: return 5000 elif grades >= 60: return 3000 elif grades >= 40: return 2000 elif extra_act >= 60: if grades >= 80: return 4000 elif grades >= 60: return 2000 elif grades >= 40: return 1000 elif extra_act >= 40: if grades >= 80: return 3000 elif grades >= 60: return 1000 elif grades >= 40: return 0 def medium_financial(extra_act, grades): if extra_act >= 80: if grades >= 80: return 4000 elif grades >= 60: return 2000 elif grades >= 40: return 1000 elif extra_act >= 60: if grades >= 80: return 3000 elif grades >= 60: return 1000 elif grades >= 40: return 0 elif extra_act >= 40: if grades >= 80: return 2000 elif grades >= 60: return 0 elif grades >= 40: return 0 def low_financial(extra_act, grades): if extra_act >= 80: if grades >= 80: return 3000 elif grades >= 60: return 1000 elif grades >= 40: return 0 elif extra_act >= 60: if grades >= 80: return 2000 elif grades >= 60: return 0 elif grades >= 40: return 0 elif extra_act >= 40: if grades >= 80: return 1000 elif grades >= 60: return 0 elif grades >= 40: return 0 financial_cond = float(input('Enter financial condition in 1 to 100: ')) extra_act = float(input('Enter the extracurricular participation in 1 to 100: ')) grades = float(input('Enter the grades of the student: ')) print(scholarship(financial_cond, extra_act, grades))
grades = float(input("Enter the applicant's GPA : ")) extracurriculars = int(input("Enter the number of extracurricular activities: ")) financial_need = input("Is there a financial need? (yes/no): ").strip().lower() eligible = True grade_thresholds = [3.5, 3.0, 2.5] scholarship_level = None for threshold in grade_thresholds: if grades >= threshold: if threshold == 3.5: scholarship_level = "Full Scholarship" elif threshold == 3.0: scholarship_level = "Partial Scholarship" elif threshold == 2.5: scholarship_level = "Basic Scholarship" break else: eligible = False print("Applicant does not meet the minimum grade requirement.") if eligible: extracurricular_threshold = 2 # Minimum number of activities required if extracurriculars < extracurricular_threshold: eligible = False print("Applicant does not meet the extracurricular activities requirement.") if eligible: while financial_need not in ['yes', 'no']: financial_need = input("Please enter 'yes' or 'no' for financial need: ").strip().lower() if financial_need == 'no': scholarship_level = "Merit-based Scholarship" # Adjust the scholarship type based on no financial need if eligible: print(f"The applicant is eligible for the {scholarship_level}.") else: print("The applicant is not eligible for the scholarship.")
提案されたソリューションを確認し、その選択の理由と潜在的な欠陥を分析しましょう:
def scholarship(financial_cond, extra_act, grades): if financial_cond >=80: if extra_act >=80: if grades >=80: return 5000 elif grades >= 60: return 3000 elif grades >= 40: return 2000 elif extra_act >= 60: if grades >=80: return 4000 elif grades >= 60: return 2000 elif grades >= 40: return 1000 elif extra_act >= 40: if grades >=80: return 3000 elif grades >= 60: return 1000 elif grades >= 40: return 0 elif financial_cond >=60: if extra_act >=80: if grades >=80: return 4000 elif grades >= 60: return 2000 elif grades >= 40: return 1000 elif extra_act >= 60: if grades >=80: return 3000 elif grades >= 60: return 1000 elif grades >= 40: return 0 elif extra_act >= 40: if grades >=80: return 2000 elif grades >= 60: return 0 elif grades >= 40: return 0 elif financial_cond >= 40: if extra_act >=80: if grades >=80: return 3000 elif grades >= 60: return 1000 elif grades >= 40: return 0 elif extra_act >= 60: if grades >=80: return 2000 elif grades >= 60: return 0 elif grades >= 40: return 0 elif extra_act >= 40: if grades >=80: return 1000 elif grades >= 60: return 0 elif grades >= 40: return 0 else: return 0 financial_cond = float(input('Enter financial condition in 1 to 100 ')) extra_act = float(input('Enter the extracurricular participation in 1 to 100 ')) grades = float(input('Enter the grades of the student ')) print(scholarship(financial_cond, extra_act, grades))
構造化アプローチ: このソリューションでは、財務状況、課外活動、成績を体系的に評価する多層の意思決定プロセスが使用されます。この構造化されたアプローチにより、奨学金の資格を決定する明確で組織的な方法が可能になります。
詳細な評価: このソリューションは、経済的ニーズ、課外活動への参加、および学業成績の特定の基準を含むさまざまな条件をカバーし、奨学金の金額を割り当てるための詳細なフレームワークを提供します。
モジュール性: 経済的ニーズのさまざまなレベルを分離し、これらのレベル内の他の基準を評価することにより、ソリューションは管理と更新が容易なモジュール構造を導入します。
明確な意思決定パス: ネストされた if-else ステートメントは意思決定の明確なパスを作成し、どの条件がどの奨学金の額につながるかを明示します。
冗長性と複雑性: コードには多くの冗長性が含まれています。例えば、成績や課外活動のチェックは複数回繰り返されます。この冗長性によりコードが複雑になり、保守と理解が困難になります。
コードの重複: Financial_cond の各範囲の意思決定ロジックには同様のパターンがありますが、しきい値がわずかに異なります。この重複は、共通ロジックを統合し、反復的なコード ブロックを減らすことで回避できます。
ハードコードされた値: 奨学金の金額としきい値はハードコードされているため、柔軟性がありません。基準または金額を変更する必要がある場合は、コードを手動で更新する必要があります。構成ファイルまたは定数を使用すると、柔軟性が向上します。
入力検証の欠如: コードは、入力が予期された範囲または型内にあるかどうかを検証しません。たとえば、financial_cond、extra_act、grades は 1 ~ 100 であることが想定されていますが、コードはこれを強制したり検証したりしません。
エッジ ケース: このソリューションはエッジ ケースを堅牢に処理しません。たとえば、financial_cond、extra_act、または Grade が境界値 (たとえば、ちょうど 40、60、または 80) 上にある場合、処理はいくぶん曖昧になります。境界ケースをより明確に処理すると、決定ロジックがより正確になります。
フィードバックも説明もありません: このソリューションでは奨学金の金額のみが提供され、特定の金額が与えられた理由は説明されません。フィードバックや説明を追加すると、ユーザーの理解と透明性が向上する可能性があります。
提案されたソリューションを最新の標準に従って改善していただけますか? [ヒント: 冗長性のリファクタリング、入力検証の実装、定数の使用、ユーザー フィードバックの強化]
高度なソリューション: https://insightshub.in/design-a-multi-tier-decion-making-system-to-determine-the-eligibility-criteria-for-a-scholarship/#h-advanced-解決策
以上が奨学金の資格基準を決定するための多段階の意思決定システムを設計します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。