Ai_ChatGpt2 2025-12-12 16:08 采纳率: 0%
浏览 3

python多级菜单问题


代码:
 2 dic_china = {
 3     "直辖市":{
 4         "北京市":["东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区",
 5           "石景山区","门头沟区","房山区","通州区","顺义区","昌平区","大兴区",
 6           "怀柔区","平谷区","延庆县","密云县",],
 8            },
 9     "省":{
10         "浙江省":{
11             "杭州市":["拱墅区","上城区","下城区","江干区","西湖区","滨江区","萧山区","余杭区","建德市","富阳市",
12                    "临安市","桐庐县","淳安县"],
13             "宁波市":["海曙区","江东区","江北区","北仑区","镇海区","鄞州区","余姚市","慈溪市","奉化市","象山县",
14                    "宁海县"],
15             "温州市":["鹿城区","龙湾区","瓯海区","瑞安市","乐清市","洞头县","永嘉县","平阳县","苍南县","文成县",
16                    "泰顺县"],
17             "嘉兴市":["南湖区","秀洲区","海宁市","平湖市","桐乡市","嘉善县","海盐县"],
18             "湖州市":["吴兴区","南浔区","德清县","长兴县","安吉县"],
19             "绍兴市":["越城区","诸暨市","上虞市","嵊州市","绍兴县","新昌县"],
20             "金华市":["婺城区","金东区","兰溪市","义乌市","东阳市","永康市","武义县","浦江县","磐安县"],
21         },
22     }
23 }
24 
25 print('欢迎使用中国省市查询工具'.center(30,'-'))
26 while True:
27     #---------遍历字典china,并编号输出城市分类信息------
28    for i,j in enumerate(dic_china,1):
29         print(i,j)
30     classify_num = input('请选择想要查看的城市分类的编号[退出:q]:')
31     #---------判断输入编号是否正确----------
32      if classify_num.isdigit():
33         classify_num = int(classify_num)
34         if 1 <= classify_num <= len(dic_china):
35             #---------将客户选择的类别的城市信息存入新的字典中----------
36             province_municipality_list = list(dic_china.keys())
37             #---------判断客户是选择额直辖市类-------
38                if province_municipality_list[classify_num-1] == '直辖市':
39                 dic_municipality = dic_china[province_municipality_list[classify_num-1]]
40                 print(''.center(50, '-'))
41                 for i, j in enumerate(dic_municipality, 1):
42                     print(i, j)
43                 municipality_num = input('请选择想要查看的直辖市的编号[返回上一级菜单:q]:')
44                 #---------判断输入编号是否正确----------
45                     if municipality_num.isdigit():
46                     municipality_num = int(municipality_num)
47                     if 1 <= municipality_num <= len(dic_municipality):
48                         municipality_list = list(dic_municipality.keys())
49                         county_list = dic_municipality[municipality_list[municipality_num-1]]
50                         print('以下是该直辖市下所有区的信息:')
51                         print(county_list)
52                 elif municipality_num.upper() == 'Q':
53                     print(''.center(50,'-'))
54                 else:
55                     print('输入错误,请重新输入!!')
56             else:
57                 dic_province = dic_china[province_municipality_list[classify_num-1]]
58                 print(''.center(50, '-'))
59                 #---------遍历字典dic_Province,并编号输出省级城市信息---------
60                     for i, j in enumerate(dic_province, 1):
61                     print(i, j)
62                 province_num = input('请选择想要查看的省的编号[返回上一级菜单:q]:')
63                 # ---------判断输入编号是否正确----------
64                     if province_num.isdigit():
65                     province_num = int(province_num)
66                     if 1<= province_num <= len(dic_province):
67                         # ---------将客户选择的市信息存入新的字典中----------
68                         province_list = list(dic_province.keys())
69                         dic_city = dic_province[province_list[province_num-1]]
70                         print(''.center(50, '-'))
71                         for i, j in enumerate(dic_city, 1):
72                             print(i, j)
73                         city_num = input('请选择想要查看的市的编号[返回上一级菜单:q]:')
74                         if city_num.isdigit():
75                             city_num = int(city_num)
76                             if 1 <= city_num <= len(dic_city):
77                                 city_list = list(dic_city.key())
78 
79                 elif province_num.upper() == 'Q':
80                     print(''.center(50,'-'))
81                 else:
82                     print('输入错误,请重新输入!!')
83         else:
84             print('输入的编号不在城市分类的编号范围内,请重新输入!!')
85     elif classify_num.upper() == 'Q':
86         print('感谢您的使用!!')
87     else:
88         print('输入错误,请重新输入!!

问题:
  代码中标红的位置,查询字典dic_city的key值存入city_list列表中,但是key方法无法使用,
  提示:Unresolved attribute reference 'key' for class
  (标红的代码,key少打了一个s,但是问题没有变,key方法不能使用)

  • 写回答

1条回答 默认 最新

  • 关注

    你这里明显是笔误啦,字典取键的方法是 keys() 不是 key(),少了个s。不过就算改过来,逻辑上也有问题:dic_city 里存的是“杭州市”这类城市对应的区列表(比如 ["拱墅区",...]),它本身是个列表,而列表没有 keys() 方法,所以才会报错。

    看代码结构,选完市之后(比如选了杭州市),dic_city 其实已经是该区列表了,直接遍历输出就行,不用再取 keys()。把第77行改成 city_list = dic_city 就行,这样就能拿到所有区的信息了。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月12日