鱼C论坛

 找回密码
 立即注册
查看: 1129|回复: 8

[已解决]求大佬帮忙找错误,问题在输入2会出错

[复制链接]
发表于 2019-8-10 19:41:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
print("""
|--- 欢迎进入通讯录程序 ---|
|--- 1:查询联系人资料  ---|
|--- 2:插入新的联系人  ---|
|--- 3:删除已有联系人  ---|
|--- 4:退出通讯录程序  ---|\n""")

zd = dict()
while 1:
    i = 0
    zl = input('请输入指令代码:')

    if zl == '1':
        xm = input('请输入联系人姓名:')
        for x in zd:
            if x == xm:
                i = 1
        if i:
            print(xm,':',zd[xm],'\n\n')
        else:
            print('没有该联系人!\n\n')
    elif zl == '2':
        xm = input('请输入联系人姓名:')
        for x in zd:
            if x == xm:
                print('您输入的姓名在通讯录中已存在 -->> ',xm,':',zd[xm])
                pd = input('是否修改用户资料(YES/其他为NO):')
                if pd == 'YES':
                    i = 1
                    break
                else:
                    i = 0
                    print('\n')
                    break
            else:
                i = 1
        if i:
            dh = input('请输入用户联系电话:')
            zd[xm] = dh
            print('\n')
    elif zl == '3':
        xm = input('请输入联系人姓名:')
        for x in zd:
            if x == xm:
                del zd[xm]
                print('已删除',xm,'\n\n')
                i = 1
                break
        if i == 0:
            print('没有该联系人!\n\n')
    elif zl == '4':
        print('|--- 感谢使用通讯录程序 ---|')
        break
    else:
        print('您的输入有误!\n\n')
最佳答案
2019-8-11 08:00:39
改成这样就好了
  1. print("""
  2. |--- 欢迎进入通讯录程序 ---|
  3. |--- 1:查询联系人资料  ---|
  4. |--- 2:插入新的联系人  ---|
  5. |--- 3:删除已有联系人  ---|
  6. |--- 4:退出通讯录程序  ---|\n""")

  7. zd = dict()
  8. while 1:
  9.     i = 0
  10.     zl = input('请输入指令代码:')

  11.     if zl == '1':
  12.         xm = input('请输入联系人姓名:')
  13.         for x in zd:
  14.             if x == xm:
  15.                 i = 1
  16.         if i:
  17.             print(xm,':',zd[xm],'\n\n')
  18.         else:
  19.             print('没有该联系人!\n\n')
  20.     elif zl == '2':
  21.         xm = input('请输入联系人姓名:')
  22.         if not zd:
  23.             dh = input('请输入用户联系电话:')
  24.             zd[xm] = dh
  25.             print('\n')
  26.         else:
  27.             for x in zd:
  28.                 if x == xm:
  29.                     print('您输入的姓名在通讯录中已存在 -->> ',xm,':',zd[xm])
  30.                     pd = input('是否修改用户资料(YES/其他为NO):')
  31.                     if pd == 'YES':
  32.                         i = 1
  33.                         break
  34.                     else:
  35.                         i = 0
  36.                         print('\n')
  37.                         break
  38.                 else:
  39.                     i = 1
  40.         if i:
  41.             dh = input('请输入用户联系电话:')
  42.             zd[xm] = dh
  43.             print('\n')
  44.     elif zl == '3':
  45.         xm = input('请输入联系人姓名:')
  46.         for x in zd:
  47.             if x == xm:
  48.                 del zd[xm]
  49.                 print('已删除',xm,'\n\n')
  50.                 i = 1
  51.                 break
  52.         if i == 0:
  53.             print('没有该联系人!\n\n')
  54.     elif zl == '4':
  55.         print('|--- 感谢使用通讯录程序 ---|')
  56.         break
  57.     else:
  58.         print('您的输入有误!\n\n')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-11 08:00:39 | 显示全部楼层    本楼为最佳答案   
改成这样就好了
  1. print("""
  2. |--- 欢迎进入通讯录程序 ---|
  3. |--- 1:查询联系人资料  ---|
  4. |--- 2:插入新的联系人  ---|
  5. |--- 3:删除已有联系人  ---|
  6. |--- 4:退出通讯录程序  ---|\n""")

  7. zd = dict()
  8. while 1:
  9.     i = 0
  10.     zl = input('请输入指令代码:')

  11.     if zl == '1':
  12.         xm = input('请输入联系人姓名:')
  13.         for x in zd:
  14.             if x == xm:
  15.                 i = 1
  16.         if i:
  17.             print(xm,':',zd[xm],'\n\n')
  18.         else:
  19.             print('没有该联系人!\n\n')
  20.     elif zl == '2':
  21.         xm = input('请输入联系人姓名:')
  22.         if not zd:
  23.             dh = input('请输入用户联系电话:')
  24.             zd[xm] = dh
  25.             print('\n')
  26.         else:
  27.             for x in zd:
  28.                 if x == xm:
  29.                     print('您输入的姓名在通讯录中已存在 -->> ',xm,':',zd[xm])
  30.                     pd = input('是否修改用户资料(YES/其他为NO):')
  31.                     if pd == 'YES':
  32.                         i = 1
  33.                         break
  34.                     else:
  35.                         i = 0
  36.                         print('\n')
  37.                         break
  38.                 else:
  39.                     i = 1
  40.         if i:
  41.             dh = input('请输入用户联系电话:')
  42.             zd[xm] = dh
  43.             print('\n')
  44.     elif zl == '3':
  45.         xm = input('请输入联系人姓名:')
  46.         for x in zd:
  47.             if x == xm:
  48.                 del zd[xm]
  49.                 print('已删除',xm,'\n\n')
  50.                 i = 1
  51.                 break
  52.         if i == 0:
  53.             print('没有该联系人!\n\n')
  54.     elif zl == '4':
  55.         print('|--- 感谢使用通讯录程序 ---|')
  56.         break
  57.     else:
  58.         print('您的输入有误!\n\n')
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
18861950621 + 5 + 5

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-11 09:28:10 | 显示全部楼层
zltzlt 发表于 2019-8-11 08:00
改成这样就好了

主要是我想知道为什么会没用出错= =
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-11 09:35:50 | 显示全部楼层
18861950621 发表于 2019-8-11 09:28
主要是我想知道为什么会没用出错= =

程序不会报错,但如果你一开始就输入 2,这时 zd 是没内容的,自然不会进入 for 循环,所以 i 为 0,不会进入到后面的 if 语句里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-11 09:55:11 | 显示全部楼层
zltzlt 发表于 2019-8-11 09:35
程序不会报错,但如果你一开始就输入 2,这时 zd 是没内容的,自然不会进入 for 循环,所以 i 为 0,不会 ...

空字典是不进入循环的么...3Q,涨知识了,如果我加个空格呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-11 09:55:56 | 显示全部楼层
18861950621 发表于 2019-8-11 09:55
空字典是不进入循环的么...3Q,涨知识了,如果我加个空格呢?

哪里加个空格呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-11 10:22:34 | 显示全部楼层
zltzlt 发表于 2019-8-11 09:55
哪里加个空格呢?

创建字典的时候,不让其为空字典
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-11 10:26:55 | 显示全部楼层
18861950621 发表于 2019-8-11 10:22
创建字典的时候,不让其为空字典

不建议这样,因为会产生和预期不一样的结果,例如用户想查询联系人的资料,输入一个空格,本来这个联系人是不存在的,但会输出 ' : '
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-11 10:28:17 | 显示全部楼层
zltzlt 发表于 2019-8-11 10:26
不建议这样,因为会产生和预期不一样的结果,例如用户想查询联系人的资料,输入一个空格,本来这个联系人 ...

3Q,懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-30 07:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表