使用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
相关产品推荐
相关产品推荐

