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

如何基于字典将数字转换为对应单词?求助修正错误代码

问题:数字转对应单词的代码修正

需求说明

  • 用户输入一串数字,将每个数位转换为字典中对应的单词;若数位不在字典中,则输出“!”
  • 示例:
    • 输入:Enter numbers : 12345
    • 输出:Result: one two three ! !
    • 原因:数字4、5不在字典中,故输出“!”

用户提供的错误代码

DictN= {
    '1':'one',
    '2':'two',
    '3':'three'
}
InpN = input('Enter Ur Number: ')

for i,j in DictN.items():
    for numb in InpN:
        if numb in i:
            print(j)
        else:
            print('!')

错误输出

one
!
!
!
!
two
!
!
!
!
three
!

Process finished with exit code 0

问题分析

原代码逻辑完全搞反了:它先遍历字典的每一项,再遍历输入的每个数字,导致每个字典条目都要和所有输入数字匹配一遍,重复输出大量无效结果。正确的逻辑应该是逐个处理输入的每个数字,对每个数字去字典中查找对应值,找不到就输出“!”。

修正后的代码

DictN = {
    '1': 'one',
    '2': 'two',
    '3': 'three'
}
InpN = input('Enter Ur Number: ')

result = []
for numb in InpN:
    # 用get方法直接获取对应值,不存在则返回'!'
    result.append(DictN.get(numb, '!'))

# 按要求格式输出结果
print(f'Result: {" ".join(result)}')

代码说明

  1. 遍历输入字符串的每个字符(即每个数位),逐个处理
  2. 字典的get()方法是核心:第一个参数是要查找的键,第二个参数是键不存在时的默认返回值,完美适配“找不到就输出!”的需求
  3. 把所有结果存入列表后,用" ".join()拼接成空格分隔的字符串,再加上Result:前缀输出,完全符合示例格式

测试输入12345,会得到预期输出:Result: one two three ! !


内容的提问来源于stack exchange,提问作者Sky Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:45:38