You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用while语句获取用户输入时,数字列表匹配失效问题咨询

问题原因与解决办法

核心原因

input()函数获取的用户输入是字符串类型(比如输入80,实际得到的是"80"),而你的options是整数列表(比如[80,90,100])。Python中不同类型的对象无法直接匹配,所以"80" in [80,90,100]的结果永远是False,导致循环无法终止。

两种解决思路

思路1:将用户输入转为整数

把输入的字符串转换成整数,同时可以处理用户输入非数字的异常情况:

def function(user):
    options = get_options(user)
    print(options)
    while True:
        try:
            user_input = int(input("please select option: "))
            if user_input in options:
                break
        except ValueError:
            pass
        print("Invalid input, please try again.")
    print(user_input)

思路2:将选项列表转为字符串类型

提前把整数列表转换成字符串列表,让输入的字符串能直接匹配:

def function(user):
    options = get_options(user)
    str_options = [str(num) for num in options]
    print(options)
    user_input = input("please select option: ")
    while user_input not in str_options:
        user_input = input("please select option: ")
    print(user_input)

内容的提问来源于stack exchange,提问作者emvirgen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:30:55