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

Mengapa Fungsi Pengesahan Input Rekursif Saya Tidak Kembali?

Susan Sarandon
Lepaskan: 2025-01-04 21:52:40
asal
725 orang telah melayarinya

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

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

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

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

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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan