You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多数字逐位转单词功能异常:无法处理多位输入数字

解决多位数字转英文单词的问题

原代码的核心问题有两个:

  1. 使用eval()将输入转为整数,当输入多位数字时(如473),n会变成整数473,而numbers列表仅包含索引0-9的元素,直接调用numbers[n]必然触发索引错误。
  2. eval()存在安全风险,不适合处理用户输入。

修改后的代码可以直接处理多位数字,同时规避上述问题:

numbers = ["zero","one","two","three","four","five","six","seven","eight","nine"]

n_str = input('Please input a number: ')
print('You typed a number: ', n_str)

# 逐位处理输入的数字字符
word_list = [numbers[int(char)] for char in n_str]
print('The number in words: ', ' '.join(word_list))

代码说明

  • 直接获取输入的字符串,无需转换为整数,既安全又能方便地遍历每一位数字。
  • 通过列表推导式遍历字符串中的每个字符,将字符转为整数后匹配numbers列表中的对应英文单词。
  • 最后用' '.join()将单词列表拼接为空格分隔的字符串输出,符合示例要求。

如果之前尝试用for循环失败,大概率是因为没有将整数转为字符串就直接遍历。比如错误的写法是直接遍历整数n,这会遍历数字的范围而非每一位,正确的做法是先把输入转为字符串再遍历每个字符。

内容的提问来源于stack exchange,提问作者quartz6.626

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:10:43