字典哪里错了
题目:NiuNiu是Java,NiuMei是Python,Niukele是CPP,NiuNeng是Python,Tony是Java,Anna是CPP,Allen是CPP,输入语言名字,输出人名或者nobody这里是我的代码
dic = {"NiuNiu":"Java","NiuMei":"Python","Niukele":"CPP","NiuNeng":"Python","Tony":"Java","Anna":"CPP","Allen":"CPP"}
name = input()
dic我看到评论里正确的代码是
dic = {"Java":["NiuNiu", "Tony"], "Python":["NiuMei","NiuNeng"],"CPP":["Niukele","Anna","Allen"]}
lan = input()
print(dic if lan in list(dic.keys()) else "Nobody")
人名也不是重复的,人名为什么不能当key呢
我这么列举法的字典,怎么改才对
dic这一步有错吗,输出是空
问题在于你的字典中使用人名作为key,而题目要求的是根据语言名字输出人名,所以应该使用语言名字作为key。正确的字典应该是:
dic = {"Java": ["NiuNiu", "Tony"], "Python": ["NiuMei", "NiuNeng"], "CPP": ["Niukele", "Anna", "Allen"]}
这样,当输入语言名字时,可以直接通过字典的key来获取对应的人名列表,然后再进行输出。而在你的代码中,使用人名作为key,当你输入语言名字时,无法直接从字典中获取对应的人名,所以输出为空。 问题在于你是用人名作为字典的键,而应该用编程语言名作为键,所以在查询时,输入NiuNiu等人名无法找到对应的值。另外,如果要用人名作为键,需要将重名的人名用列表区分。
正确的代码应该是:
dic = {"Java":["NiuNiu", "Tony"], "Python":["NiuMei","NiuNeng"], "CPP":["Niukele","Anna","Allen"]}
lan = input()
if lan in dic:
print(dic)
else:
print("Nobody")
希望能解答疑问。 根据您提供的代码,包含两个问题导致无法输出正确结果。
1. 字典键类型应为语言名字,而不是人名,因为同一个人可能会使用不同的编程语言,而一个编程语言只能被一种语言使用。因此,第二个示例中的 `dic` 定义是更准确的。
2. 第 5 行中的 `name` 变量需要包含字典的有效键,而不是人名。在输入时,您只能输入该人使用的编程语言,例如:"Java","Python" 或 "CPP"。然后,您需要使用这个输入来查找字典中与之相关的人名。如果输入的语言不再字典中,则输出 "nobody"。
以下是修复后的代码:
dic = {"Java": ["NiuNiu", "Tony"], "Python": ["NiuMei", "NiuNeng"], "CPP": ["Niukele", "Anna", "Allen"]}
language = input()
if language in dic:
print(", ".join(dic))
else:
print("nobody")
这样,当您提供语言作为输入时,程序将输出使用该语言的所有人名,如果没有人使用该语言,则打印 "nobody"。
页:
[1]