python - 来自 Automate the Boring Stuff 的示例程序未按描述工作
问题描述
我一直在浏览互联网,但在任何地方都没有看到这个,所以这一定是我做过的事情,但我不确定是什么。
《Automate the Boring Stuff with Python》一书使用以下代码来解释字典:
birthdays = {'Alice': 'Apr 1', 'Bob': 'Dec 12', 'Carol': 'Mar 4'}
while True:
print('Enter a name: (blank to quit)')
name = input()
if name == '':
break
if name in birthdays:
print(birthdays[name] + ' is the birthday of ' + name)
else:
print('I do not have birthday information for ' + name)
print('What is their birthday?')
bday = input()
birthdays[name] = bday
print('Birthday database updated.')
此代码不会为我生成任何错误,但是当我运行它时,当我尝试在字典中输入其中一个名称时它没有返回任何内容。如果我什么都不输入,程序会反应“我没有他们生日是什么时候的生日信息?”
我尝试通过以下方式调整代码:
birthdays = {'Alice': 'Apr 1', 'Bob': 'Dec 12', 'Carol': 'Mar 4'}
while True:
print('Enter a name: (blank to quit)')
name = input()
if name == '':
break
if name in birthdays:
print(birthdays[name] + ' is the birthday of ' + name)
else:
print('I do not have birthday information for ' + name)
print('What is their birthday?')
bday = input()
birthdays[name] = bday
print('Birthday database updated.')
现在我可以输入现有名称并获得正确的结果,但如果我输入的名称不在字典中,它不会返回任何内容并再次告诉我输入名称。
显然这只是一个例子,我知道它应该做什么,但它为什么要这样做呢?
解决方案
birthdays[name] = bday
这一行是第二个代码块之后的问题。您必须用新值更新字典中的值。在您的示例中,您将 分配给bday
应该已经在字典中的名称。
编辑:
birthdays = {'Alice': 'Apr 1', 'Bob': 'Dec 12', 'Carol': 'Mar 4'}
while True:
print('Enter a name: (blank to quit)')
name = input()
if name == '':
break
if name in birthdays:
print(name + ' birthday is ' + birthdays[name])
else:
print('I do not have birthday information for ' + name)
print('What is their birthday?(ex: Apr 4): ')
bday = input()
birthdays.update({name: bday})
print('Birthday database updated.')
print(birthdays)
推荐阅读
- pandas - 根据 Pandas 中数据框列的现有值递增或重置计数器
- c++ - 将参数的省略复制为返回值
- reactjs - this.state 在 api 调用后给出 null
- java - Docker 容器中的 Wildfly 未启动
- sql - 创建 Postgres 视图出现错误:列“id”指定了多次
- java - 在 actionListener 中获得 JTextFeild 的引用
- javascript - 如何在javascript中检测光标与多个移动对象的碰撞?
- python - 在 Python 中解析简历中的技能部分
- php - 使用 Telegram Bot API 制作注册机器人
- python - 如何打印因子列表的所有非重复乘积