lamupen 发表于 2020-7-14 23:30:03

各位大大,关于循环体求教。

print("I---欢迎进入通讯录程序---I")
print("I---1.查询联系人资料---I")
print("I---2.插入新的联系人---I")
print("I---3.删除已有联系人---I")
print("I---4.退出通讯录程序---I")
flag = 1
numCard = {}
while (flag):
    temp = int(input("请输入相关的指令代码:"))
    if temp == 4:
      print("I---感谢使用通讯录程序---I")
      flag=0
    if temp == 1:
      checkName = input("请输入联系人姓名:")
      print(checkName + ":" + numCard.get(checkName, "未存储该用户联系方式!"))
    if temp == 3:
      checkName = input("请输入联系人姓名:")
      if checkName in numCard.keys():
            del numCard
            print("删除成功!")
      else:
            print("删除失败")

    if temp == 2:
      checkName = input("请输入新增的联系人姓名:")
      if checkName in numCard.keys():
            print("您输入的用户在通讯录中已存在--》" + checkName + ":" + numCard)
            isUpdate = input("是否修改用户资料(YES/NO):")
            if isUpdate == "YES":
                upNum = input("请输入用户联系电话:")
                numCard = upNum
                print("修改成功!现在是:"+ checkName + ":" + numCard)
            if isUpdate == "NO":
                print("已放弃修改!")
            else:
                print("请输入正确指令!")
      else:
            inNum = input("请输入用户联系电话:")
            numCard = inNum
    else:
      print("I---请输入正确的指令!---I")


关于字典课后作业那个做通讯录的:
问题一:为啥我使用2新增用户不会执行while循环里的那个最后那个else?,选择1查询和3删除都会执行最后那个
else:
      print("I---请输入正确的指令!---I")


问题二:修改已有联系人时,如果输入的非YES和NO时,判断输入有误,能否返回输入YES/NO的这一层,而不是直接跳到第一层?


问题三:为啥新增小甲鱼名片后,再次新增重复输入小甲鱼时,按NO,不会执行
isUpdate = input("是否修改用户资料(YES/NO):")
            if isUpdate == "YES":
                upNum = input("请输入用户联系电话:")
                numCard = upNum
                print("修改成功!现在是:"+ checkName + ":" + numCard)
            if isUpdate == "NO":
                print("已放弃修改!")
            else:
                print("请输入正确指令!")
这里面的这个else,但是按YES时虽然能修改成功,却也会执行else?


老哥们while里这个else我有点懵,希望不吝赐教帮忙解惑{:10_266:}

lamupen 发表于 2020-7-15 00:41:10

我查到问题了,得用if elif else写,然后问题二用函数能解决{:10_285:}。但是新问题又出现了。

Twilight6 发表于 2020-7-15 08:50:50



问题一:为啥我使用2新增用户不会执行while循环里的那个最后那个else?,选择1查询和3删除都会执行最后那个

因为你设置在 if temp == 2 下面 ,当然只要 这里的 if 条件不成立,就会执行 else 的代码块了,改成 elif 即可

问题二:修改已有联系人时,如果输入的非YES和NO时,判断输入有误,能否返回输入YES/NO的这一层,而不是直接跳到第一层?

加个 while 循环即可

问题三:为啥新增小甲鱼名片后,再次新增重复输入小甲鱼时,按NO,不会执行

会成功执行,可能是你输入错误了大小写要严格区分

这里面的这个else,但是按YES时虽然能修改成功,却也会执行else?

同问题一用 elif 即可

参考代码:

print("I---欢迎进入通讯录程序---I")
print("I---1.查询联系人资料---I")
print("I---2.插入新的联系人---I")
print("I---3.删除已有联系人---I")
print("I---4.退出通讯录程序---I")
flag = 1
numCard = {}
while (flag):
    temp = int(input("请输入相关的指令代码:"))
    if temp == 4:
      print("I---感谢使用通讯录程序---I")
      flag=0
    elif temp == 1:
      checkName = input("请输入联系人姓名:")
      print(checkName + ":" + numCard.get(checkName, "未存储该用户联系方式!"))
    elif temp == 3:
      checkName = input("请输入联系人姓名:")
      if checkName in numCard.keys():
            del numCard
            print("删除成功!")
      else:
            print("删除失败")

    elif temp == 2:
      checkName = input("请输入新增的联系人姓名:")
      if checkName in numCard.keys():
            print("您输入的用户在通讯录中已存在--》" + checkName + ":" + numCard)
            while True:
                isUpdate = input("是否修改用户资料(YES/NO):")
                if isUpdate == "YES":
                  upNum = input("请输入用户联系电话:")
                  numCard = upNum
                  print("修改成功!现在是:"+ checkName + ":" + numCard)
                elif isUpdate == "NO":
                  print("已放弃修改!")
                else:
                  print("请输入正确指令!")
                  continue
                break

      else:
            inNum = input("请输入用户联系电话:")
            numCard = inNum
    else:
      print("I---请输入正确的指令!---I")

页: [1]
查看完整版本: 各位大大,关于循环体求教。