字典键3是否为字符串?学生姓名查询Python代码异常排查
问题解答
问题1:字典中写入的键3是否为字符串类型?
不是的,你定义的字典里的键3是整数类型(int)。从代码里的字典定义dict={1:'윤성준',2:'김희철',3:'강하늘',4:'강철중'}就能看出来,这些键都是不带引号的数字,属于整数;如果是字符串类型的键,会写成'3'(带单/双引号)。
问题2:算法输入3时仅输出'?'的代码排查
你的代码问题出在循环内的return时机错误!
看你的find_name函数:当你输入3之后,循环第一次拿到的键是1,此时a==i(3==1)不成立,代码直接执行return '?',函数就结束了——根本没机会检查后面的键2、3、4!
修正后的代码
student_dict = {1:'윤성준',2:'김희철',3:'강하늘',4:'강철중'} # 尽量不要用dict当变量名,它是Python内置类型 def find_name(dictionary): a = int(input('students number: ')) for i in dictionary: if a == i: return dictionary[a] # 循环结束后如果没找到匹配的键,再返回'?' return '?'
另外补充个小建议:不要用dict作为变量名,因为dict是Python的内置类型名称,用它当变量名会覆盖内置功能,可能引发其他问题,改成student_dict这类更清晰的名字会更好。
内容的提问来源于stack exchange,提问作者Jun
相关产品推荐
相关产品推荐

