Rumah > pembangunan bahagian belakang > Tutorial Python > Reka bentuk sistem membuat keputusan berbilang peringkat untuk menentukan kriteria kelayakan untuk biasiswa.

Reka bentuk sistem membuat keputusan berbilang peringkat untuk menentukan kriteria kelayakan untuk biasiswa.

WBOY
Lepaskan: 2024-07-17 06:02:49
asal
302 orang telah melayarinya

Design a multi-tier decision-making system to determine the eligibility criteria for a scholarship.

Soalan

Reka bentuk sistem membuat keputusan berbilang peringkat menggunakan pernyataan if-else yang boleh digunakan untuk menentukan kriteria kelayakan untuk biasiswa. Sistem harus mengambil kira pelbagai faktor seperti gred, aktiviti kokurikulum dan keperluan kewangan.

Proses Pemikiran

Untuk mereka bentuk sistem membuat keputusan berbilang peringkat bagi menentukan kelayakan biasiswa berdasarkan gred, aktiviti ekstrakurikuler dan keperluan kewangan, anda memerlukan pendekatan berstruktur untuk menilai dan menetapkan jumlah biasiswa. Berikut ialah pecahan langkah demi langkah tentang cara membuat sistem membuat keputusan menggunakan pernyataan if-else:

Kriteria untuk Keputusan Biasiswa

  • Keadaan Kewangan: Menentukan betapa memerlukan kewangan pelajar itu.
  • Aktiviti Ekstrakurikuler: Mengukur penglibatan di luar akademik.
  • Gred: Mencerminkan prestasi akademik.

Logik Keputusan Biasiswa

  • Tentukan Keperluan Kewangan: Semak sama ada pelajar termasuk dalam kategori keperluan kewangan tinggi, sederhana atau rendah.
  • Menilai Penglibatan Ekstrakurikuler: Dalam setiap kategori keperluan kewangan, semak sejauh mana keaktifan pelajar dalam aktiviti kokurikulum.
  • Nilai Gred: Akhir sekali, nilaikan gred pelajar untuk menentukan jumlah biasiswa yang tepat.

Jumlah Biasiswa

  • Keperluan Tinggi, Ekstrakurikuler Tinggi, Gred Tinggi: Biasiswa maksimum.
  • Keperluan Tinggi, Ekstrakurikuler Sederhana, Gred Sederhana: Biasiswa sederhana.
  • Keperluan Tinggi, Ekstrakurikuler Rendah, Gred Rendah: Biasiswa minimum.
  • Keperluan Sederhana, Ekstrakurikuler Tinggi, Gred Tinggi: Biasiswa yang besar.
  • Keperluan Sederhana, Ekstrakurikulum Sederhana, Gred Sederhana: Biasiswa sederhana.
  • Keperluan Sederhana, Ekstrakurikuler Rendah, Gred Rendah: Biasiswa minimum.
  • Keperluan Rendah, Ekstrakurikuler Tinggi, Gred Tinggi: Biasiswa sederhana.
  • Keperluan Rendah, Ekstrakurikuler Sederhana, Gred Sederhana: Biasiswa kecil.
  • Keperluan Rendah, Ekstrakurikuler Rendah, Gred Rendah: Tiada biasiswa.

Penyelesaian

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))
Salin selepas log masuk

Idea Lain

1

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()
Salin selepas log masuk

Sebab Penolakan:

  1. Skop dan Lebihan: Fungsi scholarship() tidak mengambil parameter, jadi ia bergantung pada pembolehubah global (financial_cond, extrac_act, gred) yang dimasukkan secara langsung. Reka bentuk ini kurang modular dan boleh membawa kepada isu dalam mengekalkan dan menguji kod.
  2. Pertindihan dan Kesamaran: Sesetengah keadaan bertindih atau berlebihan. Sebagai contoh, berbilang cawangan elif menyemak keadaan yang serupa dengan sedikit perbezaan dalam ambang atau julat, yang boleh menjadikan logik mengelirukan dan terdedah kepada ralat.
  3. Kerumitan Logik: Penggunaan berbilang pernyataan elif dengan keadaan bertindih mewujudkan struktur kompleks yang sukar untuk diikuti. Tidak jelas dengan serta-merta syarat mana yang akan benar dan apakah keputusan akhir dalam pelbagai senario.

2

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))
Salin selepas log masuk

Sebab Penolakan:

  1. Lewahan Kod: Logik untuk menentukan biasiswa diulang merentas kategori keperluan kewangan yang berbeza (kewangan_tinggi, kewangan_sederhana, kewangan_rendah), yang membawa kepada kod berlebihan. Ini boleh dipermudahkan untuk mengelakkan pengulangan dan mengurangkan risiko ketidakkonsistenan.
  2. Kerumitan dalam Panggilan Fungsi: Panggilan fungsi bersarang dan berbilang lapisan keadaan menjadikan kod lebih sukar untuk diikuti dan diselenggara. Pengasingan kepada fungsi yang berbeza adalah baik untuk modulariti tetapi boleh menjadi berlebihan dan mengelirukan disebabkan oleh jumlah keadaan bersarang.
  3. Jumlah Biasiswa Tidak Konsisten: Logik keputusan untuk jumlah biasiswa antara tahap keperluan kewangan yang berbeza tidak selalu konsisten, yang membawa kepada kekeliruan yang mungkin timbul tentang sebab jumlah biasiswa tertentu diberikan berdasarkan syarat tertentu.

3

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.")
Salin selepas log masuk

Sebab Penolakan

  1. Penyederhanaan Terlalu Banyak: Pendekatan ini terlalu mudah kerana ia tidak mengambil kira pelbagai syarat sebaliknya menggunakan satu ambang untuk gred dan semakan binari untuk keperluan kewangan. Ini boleh mengabaikan nuansa penting dalam menentukan kelayakan dan jumlah biasiswa.
  2. Nilai Berkod Keras: Tahap biasiswa dikod keras berdasarkan GPA dan semakan binari untuk keperluan kewangan tanpa mengambil kira faktor lain seperti tahap penglibatan ekstrakurikuler atau penilaian keperluan kewangan yang lebih terperinci.
  3. Pengendalian Interaksi: Gelung untuk mengendalikan input keperluan kewangan berpotensi menyebabkan gelung tak terhingga jika pengguna tidak memasukkan 'ya' atau 'tidak' (walaupun gelung tak terhingga mungkin merupakan isu yang jarang berlaku dalam amalan, ia adalah potensi kecacatan ).

Sebab untuk memilih penyelesaian dan potensi kelemahan di dalamnya

Mari kita semak penyelesaian yang dicadangkan dan analisa sebab pemilihannya serta potensi kelemahan:

Cadangan Penyelesaian

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))
Salin selepas log masuk

Sebab Pemilihan

  1. Pendekatan Berstruktur: Penyelesaian menggunakan proses membuat keputusan pelbagai peringkat yang menilai keadaan kewangan, aktiviti kokurikulum dan gred secara sistematik. Pendekatan berstruktur ini membolehkan kaedah yang jelas dan teratur untuk menentukan kelayakan biasiswa.

  2. Penilaian Terperinci: Penyelesaian itu meliputi pelbagai syarat dengan ambang khusus untuk keperluan kewangan, penglibatan ekstrakurikuler dan prestasi akademik, menyediakan rangka kerja terperinci untuk menetapkan jumlah biasiswa.

  3. Modulariti: Dengan memisahkan tahap keperluan kewangan yang berbeza dan menilai kriteria lain dalam tahap ini, penyelesaiannya memperkenalkan struktur modular yang lebih mudah untuk diurus dan dikemas kini.

  4. Laluan Keputusan Yang Jelas: Penyataan if-else bersarang mewujudkan laluan yang jelas untuk membuat keputusan, menjadikannya jelas syarat mana yang membawa kepada jumlah biasiswa.

Kepincangan yang Berpotensi

  1. Lewahan dan Kerumitan: Kod mengandungi banyak lebihan. Sebagai contoh, semakan gred dan aktiviti kokurikulum diulang beberapa kali. Lebihan ini meningkatkan kerumitan kod dan menjadikannya lebih sukar untuk dikekalkan dan difahami.

  2. Penduaan Kod: Logik membuat keputusan untuk setiap julat financial_cond mempunyai corak yang serupa tetapi dengan ambang yang berbeza sedikit. Pertindihan ini boleh dielakkan dengan menyatukan logik biasa dan mengurangkan blok kod berulang.

  3. Nilai Kod Keras: Amaun dan ambang biasiswa adalah dikod keras, yang menjadikannya tidak fleksibel. Jika kriteria atau jumlah perlu diubah, kod mesti dikemas kini secara manual. Menggunakan fail konfigurasi atau pemalar akan meningkatkan fleksibiliti.

  4. Kurang Pengesahan Input: Kod tidak mengesahkan input untuk memastikan ia berada dalam julat atau jenis yang dijangkakan. Contohnya, financial_cond, extra_act dan gred dijangka antara 1 dan 100, tetapi kod tersebut tidak menguatkuasakan atau mengesahkan perkara ini.

  5. Kes Tepi: Penyelesaian tidak mengendalikan kes tepi dengan teguh. Contohnya, jika financial_cond, extra_act atau gred tepat pada nilai sempadan (mis., tepat 40, 60, atau 80), pengendaliannya agak samar-samar. Pengendalian kes sempadan yang lebih jelas akan menjadikan logik keputusan lebih tepat.

  6. Tiada Maklum Balas atau Penjelasan: Penyelesaian hanya menyediakan jumlah biasiswa dan tidak menjelaskan mengapa jumlah tertentu diberikan. Menambah maklum balas atau penjelasan boleh meningkatkan pemahaman dan ketelusan pengguna.

Bolehkah anda menambah baik penyelesaian yang dicadangkan mengikut piawaian moden? [Petunjuk: Lebihan Faktor Semula, Laksanakan Pengesahan Input, Gunakan Pemalar dan Tingkatkan Maklum Balas Pengguna]

Penyelesaian Lanjutan di: https://insightshub.in/design-a-multi-tier-decision-making-system-to-determine-the-eligibility-criteria-for-a-scholarship/#h-advanced- penyelesaian

Atas ialah kandungan terperinci Reka bentuk sistem membuat keputusan berbilang peringkat untuk menentukan kriteria kelayakan untuk biasiswa.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan