如何基于字典将数字转换为对应单词?求助修正错误代码
问题:数字转对应单词的代码修正
需求说明
- 用户输入一串数字,将每个数位转换为字典中对应的单词;若数位不在字典中,则输出“!”
- 示例:
- 输入:
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)}')
代码说明
- 遍历输入字符串的每个字符(即每个数位),逐个处理
- 字典的
get()方法是核心:第一个参数是要查找的键,第二个参数是键不存在时的默认返回值,完美适配“找不到就输出!”的需求 - 把所有结果存入列表后,用
" ".join()拼接成空格分隔的字符串,再加上Result:前缀输出,完全符合示例格式
测试输入12345,会得到预期输出:Result: one two three ! !
内容的提问来源于stack exchange,提问作者Sky Boy
相关产品推荐
相关产品推荐

