Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Fungsi Pengesahan Input Rekursif Saya Tidak Kembali?

Mengapa Fungsi Pengesahan Input Rekursif Saya Tidak Kembali?

Susan Sarandon
Susan Sarandonasal
2025-01-04 21:52:40762semak imbas

Why Does My Recursive Input Validation Function Return None?

Mengapa fungsi rekursif saya kelihatan tidak mengembalikan Tiada?

Pertimbangkan fungsi rekursif yang mengesahkan input pengguna:

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()  # Recursively call the function
    else:
        return my_var

print('got input:', get_input())

Jika pengguna memasukkan "a" atau "b," semuanya berfungsi seperti yang diharapkan. Walau bagaimanapun, jika pengguna pada mulanya memasukkan input yang tidak sah dan kemudian membetulkannya, fungsi tersebut nampaknya mengembalikan Tiada dan bukannya input pengguna.

Tingkah laku tidak menentu ini berpunca daripada kesilapan dalam cabang rekursif. Walaupun fungsi memanggil dirinya semula dengan betul, ia gagal mengembalikan hasil panggilan rekursif:

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    get_input()  # This line should be replaced

Untuk membetulkannya, kita perlu mengembalikan nilai yang diperoleh daripada panggilan rekursif:

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    return get_input()  # We return the result of the recursive call

Perubahan ini memastikan fungsi itu mengalir dengan betul ke dalam timbunan rekursif, mengembalikan pengguna yang diperbetulkan input.

# Modified function
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.')
        return get_input()  # We return the result of the recursive call
    else:
        return my_var

print('got input:', get_input())

Dengan pengubahsuaian ini, fungsi akan mengembalikan input pengguna dengan betul, walaupun selepas mengendalikan input yang tidak sah.

Atas ialah kandungan terperinci Mengapa Fungsi Pengesahan Input Rekursif Saya Tidak Kembali?. 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