nochyby 发表于 2021-6-25 23:29:32

学习python编程快速上手课本的案例有问题,求助

birthday = {'Alice':'April 1st','Bob':'Dec 12th','Carol':'Mar 4th'}
print(birthday["Alice"]) #字典不排序,任意值为键可以找到对应的值(键:值)
while True:
    print("Please enter a name :( blank to quit)")
    name = input()
    if name in birthday:
      print(birthday + "is the birthday of" + name + ".")
    else:
      print( name+ "   isnot in the list.")
      print("Please enter his/her birthday: ")
      bday = input()
      birthday = bday
      print("The list is update.")
      for v in birthday.items():
            print(v)
    if name == '':
      break

问题:无法使用输入退出,不知道出错原因

深谙流年 发表于 2021-6-25 23:55:19

你的最后if语句的单引号要留个空格

Twilight6 发表于 2021-6-25 23:58:10



这本书应该不是什么靠谱的书,注释那描述的很模糊:字典不排序?应该是不能排序,字典是无序序列

这里讲最底下的 if 调整到 else 之上即可,否则用户的第一个 if 若不满足,那么就会执行 else 代码

else 代码块中需要用户输入生日日期,而若用户输入空时,肯定不满足第一个 if 导致执行 else,所以不会立即退出程序

birthday = {'Alice':'April 1st','Bob':'Dec 12th','Carol':'Mar 4th'}
print(birthday["Alice"])
while True:
    print("Please enter a name :( blank to quit)")
    name = input()
    if name in birthday:
      print(birthday + "is the birthday of" + name + ".")
    elif name == '':
      break
    else:
      print( name+ "   isnot in the list.")
      print("Please enter his/her birthday: ")
      bday = input()
      birthday = bday
      print("The list is update.")
      for v in birthday.items():
            print(v)

深谙流年 发表于 2021-6-26 00:01:24

错了,是你的最后一个if有问题,第一个if如果不执行的话会执行else 的,然后才是执行最后一个if,你把退出的if换成elif,然后放在else的上面就可以了
页: [1]
查看完整版本: 学习python编程快速上手课本的案例有问题,求助