鱼C论坛

 找回密码
 立即注册
查看: 1676|回复: 6

[已解决]求问25讲作业动手题目

[复制链接]
发表于 2018-6-8 18:18:33 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Michael.E 于 2018-6-8 18:38 编辑

请问以下代码错在哪里了。。。为什么指令为2的时候不对啊。。。[table=50%]
  1. print('|---欢迎进入通讯录程序---|')
  2. print('|---1:查询联系人资料  ---|')
  3. print('|---2:插入新的联系人  ---|')
  4. print('|---3:删除已有联系人  ---|')
  5. print('|---4:退出通讯录程序  ---|')
  6. person = {'小甲鱼':'020-88974651'}
  7. def Phonelist():
  8.     x = int(input("请输入相关的指令代码:"))
  9.     if(x == 1):
  10.         y = str(input("请输入联系人姓名:"))
  11.         print(person[y]+"\n")
  12.         Phonelist()
  13.     elif(x == 2):
  14.         y = str(input("请输入联系人姓名:"))
  15.         if(y == "person.get(y)"):
  16.             print("您输入的姓名在通讯录中已存在 -->" + y +":" + person.get(y))
  17.             result = str(print("是否修改用户资料(YES/NO):"))
  18.             if(result == "YES"):
  19.                change = str(input("请输入用户联系电话:"))
  20.                person[y] = change
  21.                Phonelist()
  22.             else:
  23.                 print("不采取任何操作!")
  24.                 Phonelist()
  25.         else:
  26.            z = str(input("请输入用户联系电话:"))
  27.         person[y] = z
  28.         Phonelist()
  29.     elif(x == 3):
  30.         y = str(input("请输入要删除的联系人姓名:"))
  31.         person.pop(y)
  32.         Phonelist()
  33.     elif(x == 4):
  34.         print("|--- 感谢使用通讯录程序 ---|")
  35.     else:
  36.         print("|--- 代码错误 ---|")
  37.         
  38. Phonelist()
复制代码
最佳答案
2018-6-8 18:55:43
本帖最后由 myckjx 于 2018-6-8 19:02 编辑

你写的代码好奇怪,
y = str(input("请输入联系人姓名:"))
本来input()得到的就是一个字符串,为什么还要str()?好像多此一举吧?你看:
>>> x = input('input:')
input:123
>>> x
'123'
>>> type(x)
<class 'str'>

还有这句,if(y == "person.get(y)"):
person.get(y)本来是有返回值的,你加上" "就把它本身变成串了,如下:
>>>y = "person.get(y)"
>>>print(y)
person.get(y)

去掉" "应该就可以了

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

使用道具 举报

 楼主| 发表于 2018-6-8 18:27:46 | 显示全部楼层
本帖最后由 Michael.E 于 2018-6-8 18:29 编辑

过程显示如下了。。。其中对联系人姓名的校验没了。
|---欢迎进入通讯录程序---|
|---1:查询联系人资料  ---|
|---2:插入新的联系人  ---|
|---3:删除已有联系人  ---|
|---4:退出通讯录程序  ---|
请输入相关的指令代码:2
请输入联系人姓名:小甲鱼
请输入用户联系电话:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-8 18:55:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 myckjx 于 2018-6-8 19:02 编辑

你写的代码好奇怪,
y = str(input("请输入联系人姓名:"))
本来input()得到的就是一个字符串,为什么还要str()?好像多此一举吧?你看:
>>> x = input('input:')
input:123
>>> x
'123'
>>> type(x)
<class 'str'>

还有这句,if(y == "person.get(y)"):
person.get(y)本来是有返回值的,你加上" "就把它本身变成串了,如下:
>>>y = "person.get(y)"
>>>print(y)
person.get(y)

去掉" "应该就可以了

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

使用道具 举报

 楼主| 发表于 2018-6-8 20:39:21 | 显示全部楼层
myckjx 发表于 2018-6-8 18:55
你写的代码好奇怪,
y = str(input("请输入联系人姓名:"))
本来input()得到的就是一个字符串,为什么还 ...

emmm,那个str我是参照的int(input())来写的--。那个双引号去掉之后还是没有对是否存在该用户进行校验
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-8 21:47:17 | 显示全部楼层
二楼讲的对,你15行y等于了一个给定的字符串,而不是你设想的通过get()方法查询到的键值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-8 23:31:24 | 显示全部楼层
Michael.E 发表于 2018-6-8 20:39
emmm,那个str我是参照的int(input())来写的--。那个双引号去掉之后还是没有对是否存在该用户进行校验

y是key,person.get(y)返回value,你是在用key和vaule进行比较当然不行啊,其实直接用 if y in person 就可以了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-9 21:21:20 | 显示全部楼层
myckjx 发表于 2018-6-8 23:31
y是key,person.get(y)返回value,你是在用key和vaule进行比较当然不行啊,其实直接用 if y in person 就 ...

明白了,谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-2 03:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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