Maison >développement back-end >Tutoriel Python >Concevoir un système décisionnel à plusieurs niveaux pour déterminer les critères d'éligibilité à une bourse.
Concevez un système de prise de décision à plusieurs niveaux en utilisant des instructions if-else qui peuvent être utilisées pour déterminer les critères d'éligibilité à une bourse. Le système doit prendre en compte plusieurs facteurs tels que les notes, les activités parascolaires et les besoins financiers.
Pour concevoir un système décisionnel à plusieurs niveaux permettant de déterminer l'éligibilité aux bourses en fonction des notes, des activités parascolaires et des besoins financiers, vous avez besoin d'une approche structurée pour évaluer et attribuer les montants des bourses. Voici une explication étape par étape de la façon de créer un système de prise de décision à l'aide d'instructions 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.")
Passons en revue la solution proposée et analysons les raisons de son choix ainsi que les défauts potentiels :
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))
Approche structurée : la solution utilise un processus décisionnel à plusieurs niveaux qui évalue systématiquement la situation financière, les activités parascolaires et les notes. Cette approche structurée permet une méthode claire et organisée pour déterminer l'éligibilité aux bourses.
Évaluation détaillée : La solution couvre une gamme de conditions avec des seuils spécifiques en matière de besoins financiers, d'implication parascolaire et de résultats académiques, fournissant un cadre détaillé pour l'attribution des montants des bourses.
Modularité : En séparant les différents niveaux de besoins financiers et en évaluant d'autres critères au sein de ces niveaux, la solution introduit une structure modulaire plus facile à gérer et à mettre à jour.
Chemin de décision clair : Les déclarations if-else imbriquées créent un chemin de décision clair, rendant explicite quelles conditions conduisent à quels montants de bourse.
Redondance et complexité : Le code contient beaucoup de redondance. Par exemple, les contrôles des notes et des activités extrascolaires sont répétés plusieurs fois. Cette redondance augmente la complexité du code et le rend plus difficile à maintenir et à comprendre.
Duplication de code : La logique de prise de décision pour chaque plage de Financial_cond a des modèles similaires mais avec des seuils légèrement différents. Cette duplication pourrait être évitée en consolidant la logique commune et en réduisant les blocs de code répétitifs.
Valeurs codées en dur : Les montants et seuils des bourses sont codés en dur, ce qui les rend peu flexibles. Si les critères ou les montants doivent changer, le code doit être mis à jour manuellement. L'utilisation d'un fichier de configuration ou de constantes améliorerait la flexibilité.
Manque de validation des entrées : Le code ne valide pas les entrées pour garantir qu'elles se situent dans les plages ou les types attendus. Par exemple, Financial_cond, extra_act et grades devraient être compris entre 1 et 100, mais le code ne l'applique ni ne le valide.
Edge Cases : La solution ne gère pas les cas Edge de manière robuste. Par exemple, si Financial_cond, extra_act ou grades correspondent exactement aux valeurs limites (par exemple, exactement 40, 60 ou 80), la gestion est quelque peu ambiguë. Une gestion plus claire des cas limites rendrait la logique de décision plus précise.
Aucun retour ni explication : La solution ne fournit que le montant de la bourse et n'explique pas pourquoi un certain montant a été accordé. L'ajout de commentaires ou d'une explication pourrait améliorer la compréhension et la transparence des utilisateurs.
Pouvez-vous améliorer la solution proposée selon les normes modernes ? [Astuce : refactorisez la redondance, implémentez la validation des entrées, utilisez des constantes et améliorez les commentaires des utilisateurs]
Solution avancée sur : https://insightshub.in/design-a-multi-tier-decision-making-system-to-determine-the-eligibility-criteria-for-a-scholarship/#h-advanced- solution
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!