为什么我的Python程序无法将英文数字单词转换为对应整数值?
问题原因与修复方案
核心错误点
- 判断输入类型的逻辑完全错误:
isalnum()方法会对纯英文字符也返回True,输入three这类英文数字单词时,程序会错误进入「整数转英文」的分支,根本不会执行英文转数字的逻辑。 - 整数转英文分支存在笔误:
five = four.replace("4", "five")错把字符4替换为five,正确逻辑应该是替换字符5为five。 - 长度校验逻辑不匹配需求:当前同时校验总字符长度≤5、单词数≤5,英文数字单词本身长度普遍较长,比如three就占5个字符,输入多个英文单词时会直接误判为超出限制。
修复后代码
number = input("Numbers: (max five):\n").strip() # 改用isdigit判断输入是否为纯数字 is_number = number.isdigit() if is_number: # 数字转英文逻辑,修正笔误 res = number.replace("1", "one") res = res.replace("2", "two") res = res.replace("3", "three") res = res.replace("4", "four") res = res.replace("5", "five") res = res.replace("6", "six") res = res.replace("7", "seven") res = res.replace("8", "eight") res = res.replace("9", "nine") # 数字场景仅校验位数不超过5 if len(number) > 5: print("Too many numbers given") else: print(res) else: # 英文转数字逻辑 res = number.replace("one", "1") res = res.replace("two", "2") res = res.replace("three", "3") res = res.replace("four", "4") res = res.replace("five", "5") res = res.replace("six", "6") res = res.replace("seven", "7") res = res.replace("eight", "8") res = res.replace("nine", "9") res = res.replace(" ", "") # 英文场景仅校验单词数不超过5 word_count = len(number.split()) if word_count > 5: print("Too many numbers given") else: print(res)
内容的提问来源于stack exchange,提问作者Barnabás Epres
相关产品推荐
相关产品推荐

