鱼C论坛

 找回密码
 立即注册
查看: 618|回复: 4

[已解决]python,小甲鱼通讯录问题,打印多出来了一次?

[复制链接]
发表于 2018-8-17 11:43:59 | 显示全部楼层 |阅读模式

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

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

x
十分感谢前边几位回答我问题的大神,当时没有总结全面,还有两个问题,望不吝赐教:
这是小甲鱼通讯录代码:
print("|--- 欢迎进入通讯录程序 ---|","\n","|---1:查询联系人资料---|","\n","|---2:插入新的联系人---|","\n","|---3:删除已有联系人---|","\n","|---4:退出通讯录程序---|")
address_book={"小甲鱼":"020-88974651"}

def instruction_code(code):
   
    if code==1:#指令为1,进行查询
        contact_name=input("请输入联系人姓名:")
        if contact_name not in list(address_book.keys()):#查询信息是否存在
            print("尚无此人信息,您可通过插入新的联系人建立此人信息!")
        
        else:
            print(contact_name+":"+address_book[contact_name])
        
    if code==2:#修改、填加命令
        contact_name=input("请输入新的联系人姓名:")
        
        if contact_name in list(address_book.keys()):#联系人存在进行修改
            print("你输入的联系人已存在 --->>"+contact_name+address_book[contact_name])
            confirm=input("请确认是否进行修改YES/NO:")
            
            if confirm=="YES" or "yes":#判断是否修改
                contact_phone_number=input("请输入新联系人电话")
                address_book[contact_name]=contact_phone_number
                print(contact_name+":"+address_book[contact_name])  
            if confirm=="NO" or "no":
                 print(contact_name+":"+address_book[contact_name])

        else:#联系人不存在直接填加
            contact_phone_number=input("请输入新联系人电话号码:")
            print(contact_name+":"+address_book[contact_name])
        
    if  code==3:#删除信息
        contact_name=input("请输入联系人姓名:")
        if contact_name in list(address_book.keys()):
            address_book.pop(contact_name)
            print(contact_name+"信息已经全部删除")
        
        else:
            print("查无此人信息,请确认是否有此人信息")

    if code==4:#感谢
        print("|---感谢使用通讯录程序---|")
code=int(input("请输入指令代码:"))
instruction_code(code)

提问的问题:
1. 为什么会多打印一次,在no的时候还是会让你输入新电话?
|--- 欢迎进入通讯录程序 ---|
|---1:查询联系人资料---|
|---2:插入新的联系人---|
|---3:删除已有联系人---|
|---4:退出通讯录程序---|
请输入指令代码:2
请输入新的联系人姓名:小甲鱼
你输入的联系人已存在 --->>小甲鱼020-88974651
请确认是否进行修改YES/NO:yes
请输入新联系人电话9876663
小甲鱼:9876663
小甲鱼:9876663

|--- 欢迎进入通讯录程序 ---|
|---1:查询联系人资料---|
|---2:插入新的联系人---|
|---3:删除已有联系人---|
|---4:退出通讯录程序---|
请输入指令代码:2
请输入新的联系人姓名:小甲鱼
你输入的联系人已存在 --->>小甲鱼020-88974651
请确认是否进行修改YES/NO:no
请输入新联系人电话98765
小甲鱼:98765
小甲鱼:98765


2.可以吧里边最后输出的print(),换成return,最后print(instruction_code(code))吗?



最佳答案
2018-8-17 11:47:48
  1. confirm=="YES" or "yes"
  2. confirm=="NO" or "no"
复制代码

有问题,相当于永远是True(因为非空的字符串代表True)
应该这样:
  1. confirm=="YES" or confirm=="yes"
  2. confirm=="NO" or confirm=="no"
复制代码

2.可以,但是假如你不返回任何东西(return)就会输出None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-17 11:47:48 | 显示全部楼层    本楼为最佳答案   
  1. confirm=="YES" or "yes"
  2. confirm=="NO" or "no"
复制代码

有问题,相当于永远是True(因为非空的字符串代表True)
应该这样:
  1. confirm=="YES" or confirm=="yes"
  2. confirm=="NO" or confirm=="no"
复制代码

2.可以,但是假如你不返回任何东西(return)就会输出None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-17 11:49:57 | 显示全部楼层
这些都是你的if问题 if a=1 or 2:
应该写成if a=1 or a=2,or 后边逻辑非0为True,因此默认满足if
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-17 11:59:06 | 显示全部楼层
塔利班 发表于 2018-8-17 11:49
这些都是你的if问题 if a=1 or 2:
应该写成if a=1 or a=2,or 后边逻辑非0为True,因此默认满足if

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-17 11:59:40 | 显示全部楼层
无符号整形 发表于 2018-8-17 11:47
有问题,相当于永远是True(因为非空的字符串代表True)
应该这样:

是否感谢,说的这么详细!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 18:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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