Ygh6688 发表于 2020-8-23 11:01:42

键值对错误

def deal_card(find_dict):
    print(find_dict)
    action_str = input("请选择要执行的操作 "
                     " 修改 删除 返回上级菜单")
    if action_str == "1":
      find_dict["name"] = input_card_info(find_dict["name"], "姓名 【回车不修改】:")
      find_dict["phone"] = input_card_info(find_dict["phone"], "电话【回车不修改】:")
      find_dict["qq"] = input_card_info(find_dict["qq"], "QQ【回车不修改】")
      find_dict["email"] = input_card_info(find_dict["email"], "邮箱【回车不修改】:")
      print("修改名片成功")
    elif action_str == "2":
      card_list.remove(find_dict)
      print("删除名片")
为什么我在pycharm里面运行这个模块后说find_dict["qq"] = input_card_info(find_dict["qq"], "QQ【回车不修改】")里面的‘qq’键值错误

1q23w31 发表于 2020-8-23 11:02:28

发完整代码

Twilight6 发表于 2020-8-23 11:07:59




发下完整代码看看


Ygh6688 发表于 2020-8-23 23:09:10

# 搜索名片
      elif action_str == "3":
            cards_tools.sousuo_mingpian()
def sousuo_mingpian():
    """搜索名片"""
    print("-" * 50)
    print("搜索名片")
    # 提示用户要输入的姓名
    zhao_mingzi = input("请输入搜索姓名")

    # 遍历名片列表查询搜索姓名,如果没有查询到,需要提示用户
    for card_dict in card_list:
      if card_dict["name"] == zhao_mingzi:
            print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
            print("=" * 50)
            print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (card_dict["name"],
                                                card_dict["phone"],
                                                card_dict["QQ"],
                                                card_dict["email"]))
            #  针对找到名片记录执行修改和删除的操作
            deal_card(card_dict)
            break
    else:
      print("^" * 50)
      print("没有找到%s名片" % zhao_mingzi)
      print("^" * 50)


def deal_card(find_dict):
    print(find_dict)
    action_str = input("请选择要执行的操作 "
                     " 修改 删除 返回上级菜单")
    if action_str == "1":
      find_dict["name"] = input_card_info(find_dict["name"], "姓名 【回车不修改】:")
      find_dict["phone"] = input_card_info(find_dict["phone"], "电话【回车不修改】:")
      find_dict["qq"] = input_card_info(find_dict["qq"], "QQ【回车不修改】")
      find_dict["email"] = input_card_info(find_dict["email"], "邮箱【回车不修改】:")
      print("修改名片成功")
    elif action_str == "2":
      card_list.remove(find_dict)
      print("删除名片")


def input_card_info(dict_value, tip_massage):
    # 提示用户输入内容
    result_str = input(tip_massage)
    # 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
      return result_str
    # 如果用户不输入内容,返回字典中原有的值
    else:
      return dict_value

Ygh6688 发表于 2020-8-23 23:10:40

Ygh6688 发表于 2020-8-23 23:09
# 搜索名片
      elif action_str == "3":
            cards_tools.sousuo_mingpian()


这是显示错误的代码地方

1q23w31 发表于 2020-8-24 07:28:39

Ygh6688 发表于 2020-8-23 23:10
这是显示错误的代码地方

没有测试数据?如果有,把数据发一下

Ygh6688 发表于 2020-8-24 09:11:17

1q23w31 发表于 2020-8-24 07:28
没有测试数据?如果有,把数据发一下

我是萌新也不太清楚这个是不是测试数据{:5_96:}

Traceback (most recent call last):
File "/home/python/桌面/06_名片管理/card_main.py", line 19, in <module>
    cards_tools.sousuo_mingpian()
File "/home/python/桌面/06_名片管理/cards_tools.py", line 85, in sousuo_mingpian
    deal_card(card_dict)
File "/home/python/桌面/06_名片管理/cards_tools.py", line 100, in deal_card
    find_dict["qq"] = input_card_info(find_dict["qq"], "QQ【回车不修改】")
KeyError: 'qq'

1q23w31 发表于 2020-8-24 11:21:33

本帖最后由 1q23w31 于 2020-8-24 11:24 编辑

Ygh6688 发表于 2020-8-24 09:11
我是萌新也不太清楚这个是不是测试数据

Traceback (most recent call last):


哪个是主函数?,你是怎么运行的?,这不是全部代码吧,如果两篇以上代码,请用网盘传一下,

Ygh6688 发表于 2020-8-24 23:13:00

1q23w31 发表于 2020-8-24 11:21
哪个是主函数?,你是怎么运行的?,这不是全部代码吧,如果两篇以上代码,请用网盘传一下,

链接:https://pan.baidu.com/s/1q7PrQIbC2xn50XFo8WCIaA
提取码:thdz
我是在虚拟机ubantu上运行的,麻烦大佬了{:10_303:}{:10_303:}

Ygh6688 发表于 2020-8-26 10:27:44

Ygh6688 发表于 2020-8-24 23:13
链接:https://pan.baidu.com/s/1q7PrQIbC2xn50XFo8WCIaA
提取码:thdz
我是在虚拟机ubantu上运行的, ...

def deal_card(find_dict):
    print(find_dict)
    action_str = input("请选择要执行的操作 "
                     " 修改 删除 返回上级菜单")
    if action_str == "1":
      find_dict["name"] = input_card_info(find_dict["name"], "姓名 【回车不修改】:")
      find_dict["phone"] = input_card_info(find_dict["phone"], "电话【回车不修改】:")
      find_dict["qq"] = input_card_info(find_dict["qq"], "QQ【回车不修改】")
      find_dict["email"] = input_card_info(find_dict["email"], "邮箱【回车不修改】:")
      print("修改名片成功")
    elif action_str == "2":
      card_list.remove(find_dict)
      print("删除名片")
这个是输出错误的主函数
elif action_str == "3":
            cards_tools.sousuo_mingpian()
这个是用来调用输出错误函数工具
其他的地方能正常运行,唯独这个函数说我里面的键值‘qq’错误
实在是麻烦大佬了

疾风怪盗 发表于 2020-8-28 12:13:49

https://fishc.com.cn/thread-178980-1-1.html
新帖已回复

应该是qq改成QQ就行了
页: [1]
查看完整版本: 键值对错误