Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Fungsi Pengesahan Input Rekursif Saya Tidak Kembali Daripada 'a' atau 'b'?

Mengapa Fungsi Pengesahan Input Rekursif Saya Tidak Kembali Daripada 'a' atau 'b'?

DDD
DDDasal
2024-12-21 01:30:09193semak imbas

Why Does My Recursive Input Validation Function Return None Instead of 'a' or 'b'?

Fungsi Rekursif Tidak Mengembalikan: Masalah dan Penyelesaian

Masalah:

Fungsi rekursif direka bentuk untuk mengesahkan input pengguna dan mengembalikan "a" atau "b" tanpa diduga mengembalikan Tiada apabila input yang salah disediakan dan kemudian diperbetulkan.

Kod Fungsi:

def get_input():
    my_var = input('Enter "a" or "b": ')

    if my_var != "a" and my_var != "b":
        print('You didn\'t type "a" or "b". Try again.')
        get_input()
    else:
        return my_var

Gelagat Yang Dijangka:

Apabila pengguna memasukkan input yang sah ("a" atau "b"), fungsi harus mengembalikan nilai my_var.

Gelagat Sebenar:

Apabila pengguna memasukkan input tidak sah dan kemudian memasukkan "a" atau "b", fungsi mengembalikan Tiada dan bukannya nilai input yang sah .

Sebab:

Dalam rekursif panggil dalam pernyataan if:

get_input()

Nilai pulangan panggilan rekursif tidak dikembalikan oleh fungsi. Sebaliknya, fungsi itu jatuh pada penghujungnya tanpa mengembalikan apa-apa secara eksplisit. Dalam Python, kehilangan penghujung fungsi secara tersirat mengembalikan Tiada.

Penyelesaian:

Untuk menyelesaikan isu ini, kembalikan nilai pulangan panggilan rekursif dalam pernyataan if:

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    return get_input()

Ini memastikan bahawa apabila input tidak sah disediakan dan diperbetulkan, fungsi mengembalikan nilai dengan betul my_var, seperti yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa Fungsi Pengesahan Input Rekursif Saya Tidak Kembali Daripada 'a' atau 'b'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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