Python入门练习:使用字典匹配多语言问候的输入输出问题求助
问题原因
- 代码仅执行了1次
input()读取输入,后续的for循环是遍历字典的所有键并打印对应值,没有实现逐行读取用户输入、匹配输入内容的逻辑 - 存储用户输入的变量名
key和遍历字典键的循环变量重名,用户输入的内容直接被后续循环变量覆盖,完全没有参与匹配判断 - 终止输入的
#判断逻辑写在字典键遍历的循环里,字典本身不存在#这个键,永远无法触发终止逻辑
修正后代码
# 定义问候语与语言的映射字典 greet_map = {"HELLO":"ENGLISH", "HALLO":"AFRIKAANS", "BONJOUR":"FRENCH", "MOLO":"ISIXHOSA", "SAWUBONA":"ISIZULU", "MARHABA":"ARABIC"} while True: # 逐行读取输入 line = input() # 遇到仅含#的行直接终止循环 if line == '#': break # 匹配字典,存在则输出对应值,否则输出UNKNOWN print(greet_map.get(line, 'UNKNOWN'))
逻辑说明
- 用
while True实现无限循环逐行读取输入,满足最多1000行输入的需求 - 每读取一行先判断是否为
#,符合终止条件直接跳出循环,不处理该行 - 调用字典的
get()方法匹配输入内容,存在对应键则返回对应语言名称,不存在则返回默认值UNKNOWN,完全符合输出规则要求
内容的提问来源于stack exchange,提问作者Joanna Green
相关产品推荐
相关产品推荐

