鱼C论坛

 找回密码
 立即注册
查看: 556|回复: 3

[已解决]25课 字典最后一题 为什么

[复制链接]
发表于 2018-12-30 16:49:43 | 显示全部楼层 |阅读模式

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

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

x
25课最后一题,为什么在程序字典里存入联系人和电话,运行查询的时候会报错,运行过程中插入的人名和电话就不会报错?


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


dict1 =dict((('张三',23213),('李四',3213214)))

while True:
    a = int(input('请输入相关指令:'))
    if a == 1:
        name = input('请输入需要查询的人的姓名:')
        if name in dict1:
            print(name + ' : ' + dict1[name])
            continue
        else:
            print('查无此人')
            continue
    if a == 2:     
        name = input('请输入姓名:')
        if name in dict1:
            print('您输入的姓名在通讯录中已存在 -->> ',end='')
            print(name + ':'+ dict1[name])
            flag = input('是否修改用户资料?(YES/NO)')
            if flag == 'YES':
                  dict1[name] = input('请输入联系电话:')
                  continue
            else:
                continue
        else:
            dict1[name] = input('请输入联系电话:')
            continue
    if a == 3:
        name = input('请输入联系人姓名:')
        if name in dict1:
            del(dict1[name])
            continue
        else:
            print('查无此人')
            continue
    if a == 4:
        break
    else:
        print("输入有误,请重新输入。\n")

print('''
|--- 感谢使用通讯录---|''')

   




Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
================ RESTART: C:/Users/Administrator/Desktop/1.py ================

|--- 欢迎进入通讯录程序---|
|--- 1:查询联系人资料 ---|
|--- 2:插入新的联系人 ---|
|--- 3:删除已有联系人 ---|
|--- 4:退出通讯录程序 ---|
请输入相关指令:1
请输入需要查询的人的姓名:张三
Traceback (most recent call last):
  File "C:/Users/Administrator/Desktop/1.py", line 16, in <module>
    print(name + ' : ' + dict1[name])
TypeError: can only concatenate str (not "int") to str
>>>
最佳答案
2018-12-30 20:48:33
本帖最后由 凌九霄 于 2018-12-30 20:58 编辑

当有字符串连接的时候,你要自行保证变量都是字符型,因为系统并不能隐含地自动转换。也就是说你需要将电话号码显式转化为字符串,如果你的电话号码非字符串的话。
print(name + ' : ' + str(dict1[name]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-30 20:48:33 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2018-12-30 20:58 编辑

当有字符串连接的时候,你要自行保证变量都是字符型,因为系统并不能隐含地自动转换。也就是说你需要将电话号码显式转化为字符串,如果你的电话号码非字符串的话。
print(name + ' : ' + str(dict1[name]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-30 22:16:27 | 显示全部楼层
字典中电话号码是数字类型的,不能把它直接跟name这个字符串变量直接‘+’。
你应该在把字典的电话号码改成字符串。
dict1 =dict((('张三',‘23213’),('李四',‘3213214’)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-31 14:03:20 | 显示全部楼层
十分感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 16:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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