鱼C论坛

 找回密码
 立即注册
查看: 1065|回复: 7

[已解决]小甲鱼第二十三讲课后作业的动手做一做,可以帮忙看看我自己的代码有什么大问题吗?

[复制链接]
发表于 2020-5-10 17:40:42 | 显示全部楼层 |阅读模式

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

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

x
  1. print("|---欢迎进入通讯录程序---|")
  2. print("|---1:查询联系人资料---|")
  3. print("|---2:插入新的联系人---|")
  4. print("|---3:删除已有联系人---|")
  5. print("|---4:退出通讯录程序---|")
  6. num = int(input('请输入相关指令代码:'))
  7. dict1={}
  8. def foo(num):
  9.     if num == 1:
  10.        print("请输入联系人姓名:",end="")
  11.        name1 = input("")
  12.        if name1 not in dict1.keys():
  13.            print('未查找到该联系人!')
  14.        else:
  15.             print(name1,":",dict1[name1])
  16.     if num == 2:
  17.         print("请输入联系人姓名:",end="")
  18.         name2 =input("")
  19.         print("请输入用户联系电话:",end="")
  20.         phone2=int(input(""))
  21.         if name2 not in dict1.keys():
  22.             dict1[name2]='%d'%phone2
  23.         else:
  24.             print("您输入的姓名在通讯录中已存在-->",name2,':',dict1[name2])
  25.             print('是否修改用户资料(Yes/No)',end="")
  26.             decide1 = input("")
  27.             if decide1 == 'Yes':
  28.                 phone21=int(input("请输入用户联系人电话:"))
  29.                 dict1[name2]='%d'%phone21
  30.     if num == 3:
  31.         name3 = input('请输入需要删除的联系人姓名:')
  32.         if name3 in dict1.keys():
  33.             dict1.pop(name3)
  34.         else:
  35.             print('查无此人!')
  36.     while num == 4:
  37.         print("|———感谢使用通讯录程序———|")
  38.         break
  39.     if num != 1 and num != 2 and num != 3 and num != 4:
  40.         print('请输入正确的代码编号')
  41. foo(num)
  42. while num!=4:
  43.     print("——————————————————————————————————")
  44.     num = int(input('请输入相关指令代码:'))
  45.     foo(num)
复制代码
最佳答案
2020-5-10 22:31:05
本帖最后由 Twilight6 于 2020-5-10 23:02 编辑

20行转整型多余的操作
  1.         phone2=int(input(""))
复制代码

都学23课时了 字符串的操作应该有了解吧 用str.isdigit(),建议在开始输入代码这里加入判断输入的是不是数字,
如果不是就提示输入错误,不然报错看着多难受,代码如下:
(isdigit()如果字符串只包含数字则返回 True,否则返回 False。)
  1. while num!=4:
  2.     print("——————————————————————————————————")
  3.     num = input('请输入相关指令代码:')
  4.     if num.isdigit():
  5.         num = int(num)
  6.         foo(num)
  7.     else:
  8.         print('错误:请输入规范!')
复制代码


你这里没必要把input 的值弄成int  然后又用 %d 把整型的input 格式化到字符串 本来input就是字符串 无用功太多了帮你改了下也增加了输入非数字时候的提示
  1. print("|---欢迎进入通讯录程序---|")
  2. print("|---1:查询联系人资料---|")
  3. print("|---2:插入新的联系人---|")
  4. print("|---3:删除已有联系人---|")
  5. print("|---4:退出通讯录程序---|")
  6. num = input('请输入相关指令代码:')
  7. dict1 = {}


  8. def foo(num):
  9.     if num == 1:
  10.         name1 = input("请输入联系人姓名:")
  11.         if name1 not in dict1.keys():
  12.             print('未查找到该联系人!')
  13.         else:
  14.             print(name1, ":", dict1[name1])
  15.     if num == 2:
  16.         while True:
  17.             name2 = input("请输入联系人姓名:")
  18.             phone2 = input("请输入用户联系电话:")
  19.             if phone2.isdigit():
  20.                 if name2 not in dict1.keys():
  21.                     dict1[name2] = phone2
  22.                 else:
  23.                     print("您输入的姓名在通讯录中已存在-->", name2, ':', dict1[name2])
  24.                     decide1 = input("是否修改用户资料(Yes/No)")
  25.                     if decide1 == 'Yes':
  26.                         phone21 = input("请输入用户联系人电话:")
  27.                         dict1[name2] = phone21
  28.                 break
  29.             else:
  30.                 print('错误:输入的不是数字!请请重新输入!')

  31.     if num == 3:
  32.         name3 = input('请输入需要删除的联系人姓名:')
  33.         if name3 in dict1.keys():
  34.             dict1.pop(name3)
  35.         else:
  36.             print('查无此人!')
  37.     while num == 4:
  38.         print("|———感谢使用通讯录程序———|")
  39.         break
  40.     if num != 1 and num != 2 and num != 3 and num != 4:
  41.         print('请输入正确的代码编号')

  42. if num.isdigit():
  43.     num = int(num)
  44.     foo(num)
  45. else:
  46.     print('错误:输入的不是整数!请请重新输入!')
  47. while True:
  48.     print("——————————————————————————————————")
  49.     num = input('请输入相关指令代码:')
  50.     if num.isdigit():
  51.         num = int(num)
  52.         foo(num)
  53.     else:
  54.         print('错误:输入的不是整数!请请重新输入!')
复制代码



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

使用道具 举报

发表于 2020-5-10 19:33:22 | 显示全部楼层
自己运行一遍,看看有没有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-10 20:15:45 | 显示全部楼层
有两个问题。
第一,25行里面,使用的应该是input而不是print,并且需接受输入;
第二,36行里面,使用while虽然能正常执行,但并不建议,看起来难看。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-10 22:31:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-5-10 23:02 编辑

20行转整型多余的操作
  1.         phone2=int(input(""))
复制代码

都学23课时了 字符串的操作应该有了解吧 用str.isdigit(),建议在开始输入代码这里加入判断输入的是不是数字,
如果不是就提示输入错误,不然报错看着多难受,代码如下:
(isdigit()如果字符串只包含数字则返回 True,否则返回 False。)
  1. while num!=4:
  2.     print("——————————————————————————————————")
  3.     num = input('请输入相关指令代码:')
  4.     if num.isdigit():
  5.         num = int(num)
  6.         foo(num)
  7.     else:
  8.         print('错误:请输入规范!')
复制代码


你这里没必要把input 的值弄成int  然后又用 %d 把整型的input 格式化到字符串 本来input就是字符串 无用功太多了帮你改了下也增加了输入非数字时候的提示
  1. print("|---欢迎进入通讯录程序---|")
  2. print("|---1:查询联系人资料---|")
  3. print("|---2:插入新的联系人---|")
  4. print("|---3:删除已有联系人---|")
  5. print("|---4:退出通讯录程序---|")
  6. num = input('请输入相关指令代码:')
  7. dict1 = {}


  8. def foo(num):
  9.     if num == 1:
  10.         name1 = input("请输入联系人姓名:")
  11.         if name1 not in dict1.keys():
  12.             print('未查找到该联系人!')
  13.         else:
  14.             print(name1, ":", dict1[name1])
  15.     if num == 2:
  16.         while True:
  17.             name2 = input("请输入联系人姓名:")
  18.             phone2 = input("请输入用户联系电话:")
  19.             if phone2.isdigit():
  20.                 if name2 not in dict1.keys():
  21.                     dict1[name2] = phone2
  22.                 else:
  23.                     print("您输入的姓名在通讯录中已存在-->", name2, ':', dict1[name2])
  24.                     decide1 = input("是否修改用户资料(Yes/No)")
  25.                     if decide1 == 'Yes':
  26.                         phone21 = input("请输入用户联系人电话:")
  27.                         dict1[name2] = phone21
  28.                 break
  29.             else:
  30.                 print('错误:输入的不是数字!请请重新输入!')

  31.     if num == 3:
  32.         name3 = input('请输入需要删除的联系人姓名:')
  33.         if name3 in dict1.keys():
  34.             dict1.pop(name3)
  35.         else:
  36.             print('查无此人!')
  37.     while num == 4:
  38.         print("|———感谢使用通讯录程序———|")
  39.         break
  40.     if num != 1 and num != 2 and num != 3 and num != 4:
  41.         print('请输入正确的代码编号')

  42. if num.isdigit():
  43.     num = int(num)
  44.     foo(num)
  45. else:
  46.     print('错误:输入的不是整数!请请重新输入!')
  47. while True:
  48.     print("——————————————————————————————————")
  49.     num = input('请输入相关指令代码:')
  50.     if num.isdigit():
  51.         num = int(num)
  52.         foo(num)
  53.     else:
  54.         print('错误:输入的不是整数!请请重新输入!')
复制代码



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

使用道具 举报

 楼主| 发表于 2020-5-10 22:52:37 | 显示全部楼层
陈尚涵 发表于 2020-5-10 20:15
有两个问题。
第一,25行里面,使用的应该是input而不是print,并且需接受输入;
第二,36行里面,使用wh ...

您好,关于您的指点我明白了。
25行的输入值我放在26行的decide中了。25行print的end参数为’‘,所以会有输入值。这种写法我是见别人这么写的,用print和Input连用,来打印和接收。
您指出的第36行里面用while印象美观,我一开始也这么想,但鄙人资质愚钝,当时并未相处有什么能结束函数的方法,故用while的break方法。
多谢您的赐教。十分感谢。
如果您能指点我更好的结束函数的方法那就真的感激不尽了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-10 23:25:40 | 显示全部楼层
Twilight6 发表于 2020-5-10 22:31
20行转整型多余的操作

都学23课时了 字符串的操作应该有了解吧 用str.isdigit(),建议在开始输入代码这 ...
  1. print('|‐‐‐ 欢迎进入通讯录程序 ‐‐‐|')
  2. print('|‐‐‐ 1:查询联系人资料 ‐‐‐|')
  3. print('|‐‐‐ 2:插入新的联系人 ‐‐‐|')
  4. print('|‐‐‐ 3:删除已有联系人 ‐‐‐|')
  5. print('|‐‐‐ 4:退出通讯录程序 ‐‐‐|')
  6. dict1={}
  7. num = input("请输入相关指令代码:")
  8. def foo(num):
  9.     if num==1:
  10.         name1=input("请输入联系人姓名:")
  11.         if name1 not in dict1.keys():
  12.             print("未找到该联系人!")
  13.         else:
  14.             print(name1,":",dict1[name1])
  15.     if num==2:
  16.         name2=input("请输入联系人姓名:")
  17.         phone2=input("请输入用户联系电话:")
  18.         if name2 not in dict1.keys():
  19.             dict1[name2]=phone2
  20.         else:
  21.             print("您输入的姓名在通讯录中已存在-->",name2,":",dict1[name2])
  22.             decide1=input("是否修改用户资料(Yes/No)")
  23.             if decide1=="Yes":
  24.                 phone21=input("请输入用户联系人电话:")
  25.                 dict1[name2]=phone21
  26.     if num==3:
  27.         name3=input("请输入需要删除的联系人姓名:")
  28.         if name3 in dict1.keys():
  29.             dict1.pop(name3)
  30.         else:
  31.             print("您输入的用户不在联系人列表中!")
  32.     while num==4:
  33.         print("|———感谢使用通讯录程序———|")
  34.         break
  35.     if num!=1 and num!=2 and num!=3 and num!=4:
  36.             print("请输入正确的指令代码!")
  37. if num.isdigit():
  38.     num=int(num)
  39.     foo(num)
  40. else:
  41.     print("Error:请规范化输入!")
  42. while num!=4:
  43.     print("——————————————————————————————————")
  44.     num = input("请输入相关指令代码:")
  45.     if num.isdigit():
  46.         num=int(num)
  47.         foo(num)
  48.     else:
  49.         print("Error:请规范您的输入!")
复制代码

我重新修改了下,把您说的多余的无用功的地方划去了。
多谢您的指点。十分感谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-10 23:28:09 | 显示全部楼层
Misaka2423 发表于 2020-5-10 23:25
我重新修改了下,把您说的多余的无用功的地方划去了。
多谢您的指点。十分感谢。

加油,input输出本身就是字符串,你用%来格式化也是把其他类型的东西转成字符串的,所以说一开始直接用字符串最好啦~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-10 23:37:35 | 显示全部楼层
Twilight6 发表于 2020-5-10 23:28
加油,input输出本身就是字符串,你用%来格式化也是把其他类型的东西转成字符串的,所以说一开始直接用字 ...

好的,受教了。谢谢您。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 01:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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