Python多数字逐位转单词功能异常:无法处理多位输入数字
解决多位数字转英文单词的问题
原代码的核心问题有两个:
- 使用
eval()将输入转为整数,当输入多位数字时(如473),n会变成整数473,而numbers列表仅包含索引0-9的元素,直接调用numbers[n]必然触发索引错误。 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
相关产品推荐
相关产品推荐

