Python将含千/百万单位的数字字符串转带逗号分隔整数运行出错求助
错误原因
- 核心逻辑错误:你把数值和单位的计算关系搞反了。千位对应的是原数*1000,不是加000,而且Python里直接写
000会被识别为整数0,2+0自然得到结果2,没有后缀的零。另外Python3不支持十进制数字前导零的写法,000本身还会触发语法报错。 - 匹配逻辑不严谨:当前只判断了
data[1] == str.lower('thousand'),既没有对用户输入的单位做小写转换,也没有补充million的匹配逻辑,输入带million的字符串时会没有任何输出。 - 没有做异常兼容:如果用户输入的格式不符合「数字+空格+单位」的结构,直接取
data[0]、data[1]会触发下标越界错误。
修正后的可运行代码
def main(): print("Please enter a number using the word 'thousand' or 'million'.") number = input("For example, 1 million or 1 thousand: ") data = number.strip().split() # 校验输入格式合法性 if len(data) != 2 or not data[0].isdigit(): print("输入格式不符合要求,请按照示例格式输入") return num = int(data[0]) unit = data[1].lower() if unit == 'thousand': res = num * 1000 elif unit == 'million': res = num * 1000000 else: print("仅支持thousand和million两种单位") return print(f"{res:,}") if __name__ == "__main__": main()
效果验证
输入2 thousand会输出2,000,输入2 million会输出2,000,000,完全符合需求。
内容的提问来源于stack exchange,提问作者Booker5677
相关产品推荐
相关产品推荐

