Python如何实现input输入支持逗号分隔数字和短横线区间解析
数字区间输入解析功能实现
你无需使用正则表达式,仅通过基础的字符串分割判断即可完成需求,修改后的完整代码如下:
def convert_to_int(user_input_str): input_list_str = user_input_str.split(",") number_list = [] for item in input_list_str: # 去除片段前后空格,兼容用户输入带空格的场景 item = item.strip() if '-' in item: # 仅分割1次,避免多横线输入导致的报错 start, end = item.split('-', 1) start_num = int(start.strip()) end_num = int(end.strip()) # range为左闭右开特性,右边界需要+1才能包含结束值 number_list.extend(range(start_num, end_num + 1)) else: # 普通单数字直接转换加入列表 number_list.append(int(item)) return number_list if __name__ == "__main__": print("enter list, each integer separated by a comma") user_input_str = input() print("From user : ", convert_to_int(user_input_str))
功能验证
输入样例1,2,3,9-14,21,运行后输出结果为[1, 2, 3, 9, 10, 11, 12, 13, 14, 21],完全匹配预期要求。
如果需要兼容非法输入场景(比如非数字字符、区间右值小于左值等),可以在数字转换和区间生成逻辑外包裹try-except语句捕获异常,给用户对应错误提示即可。
内容的提问来源于stack exchange,提问作者Windy71
相关产品推荐
相关产品推荐

