Python如何实现1-10数字转英文文本 并将多if判断改为for循环
实现代码
def numberToText(input_num): # 输入合法性校验,不符合要求直接返回原输入 if not isinstance(input_num, int) or input_num < 1 or input_num > 10: return input_num # 按顺序存储1到10对应的英文文本 num_text_list = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"] # for循环遍历匹配对应数字 for index in range(len(num_text_list)): # 列表索引从0开始,对应数字为索引+1 if index + 1 == input_num: return num_text_list[index] # 兜底逻辑,理论上前面校验通过不会走到这一步 return input_num # 测试调用示例 if __name__ == "__main__": test_input = 5 print(numberToText(test_input))
逻辑说明
- 首先对输入参数做类型和范围校验,不符合1-10整数要求的直接返回原输入,和你原有逻辑的兜底行为保持一致
- 原有代码中参数名使用了Python内置函数名
input,示例中修改为input_num避免命名冲突 - 提前按顺序定义1到10对应的英文文本列表,列表索引从0开始,对应数字为索引值+1
- 通过for循环遍历列表索引,匹配到和输入值相等的
索引+1时,直接返回对应位置的英文文本 - 不需要维护多个if判断分支,后续如果要扩展支持的数字范围,只需要在列表末尾追加对应英文即可,无需修改循环逻辑
内容的提问来源于stack exchange,提问作者user17474631
相关产品推荐
相关产品推荐

