我正在做与字典一起工作的家庭作业。目的是创建一个程序,该程序具有以名字和生日作为值的字典。它的意思是要求输入他们想知道生日的人。我正在尝试添加一个“功能”,如果他们在词典中没有输入名称,它将输出类似“抱歉,该名称未重新确认,请重试。”之类的消息。
我在下面尝试了一些方法,但是它不起作用。
birthdays = {
"Jeremy" : '3/28/01',
"Jacob" : '6/30/01',
"Colin" : '10/5/00',
"Chris Evans" : '6/13/81',
"Robert Downey Jr." : '4/4/65',
"Ryan Reynolds" : '10/23/76',
}
def run_program():
print("This is a program that will tell you the birthdays of some of my friends as long as some famous names!")
print("We have the birthdays of: ")
for key in birthdays:
print(key)
return_value = input("Whose birthday would you like to know?: ")
for key in birthdays:
if[return_value] not in birthdays[]:
print("I'm sorry try again?")
return_value = input("Whose birthday would you like to know?: ")
else
print(str(return_value.lower().capitalize())+ "'s birtday is: ")
print(birthdays[return_value.lower().capitalize()])
if __name__ == '__main__':
run_program()
答案 0 :(得分:0)
尝试以下代码。我猜您的需求是直到找到匹配项之前,您都要提出问题,因此请使用while
循环。当条件满足时,您只需中断并退出循环。另外,在字典中搜索键时遇到了一些错误。
def run_program():
print("This is a program that will tell you the birthdays of some of my friends as long as some famous names!")
print("We have the birthdays of: ")
for key in birthdays:
print(key)
return_value = input("Whose birthday would you like to know?: ")
while True:
if return_value not in birthdays.keys():
print("I'm sorry try again?")
return_value = input("Whose birthday would you like to know?: ")
else:
print(str(return_value.lower().capitalize())+ "'s birtday is: ")
print(birthdays[return_value.lower().capitalize()])
break
if __name__ == '__main__':
run_program()
答案 1 :(得分:0)
欢迎来到StackOverflow!第16行中没有执行您想要的操作的原因之一就是
if[return_value] not in birthdays[]:
这是不正确的语法,有两个原因。第一,变量名称在用于这种检查时不会放在方括号中。第二,除非您要在所述词典中找到特定的键,否则不要将括号放在词典名称的后面。
因此,该行应更改为类似的内容
if return_value not in birthdays:
此外,如果他们输入不在词典中的名称,则当提示他们输入另一个名称时,该名称将不执行任何操作。只是结束程序而没有输出。在尝试自己修复该部分后,我可以稍作修改。
答案 2 :(得分:0)
好的,生日是一本字典。如果您尝试访问字典中不存在的键,则python会引发KeyError,因此您可以在代码中进行try / catch并处理丢失的键。
除此之外,您的代码有一些小错误,但是请不要害怕它们在我们乞讨时很常见
在
for key in birthdays:
print(key)
您要打印生日键,因此需要birthdays.keys()
来返回字典中的键列表,因此
for key in birthdays.keys():
print(key)
收到名称后,您要检查该名称是否在生日字典中。在python中,有一个使用EAFP的约定(要求宽恕比允许容易)。这告诉我们的是,更多使用 pythonic 来使用try / catch代替if / else。在这种情况下,您可以尝试访问密钥并处理KeyError
(如果不存在),这就是方法
...
while True:
return_value = input("Whose birthday would you like to know?: ")
try:
print(f"{return_value.lower().capitalize()}'s birthday is {birthdays[return_value.lower().capitalize()]}")
break
except KeyError as e:
print("I'm sorry try again?")
致谢