[英]How to understand an undefined error in a function I'm trying to write
我是一名新工程师,我正在 Python 中编写一个简单的电话簿应用程序。这是一个非常不言自明的项目,因为它是一个初学者项目。 当我写 function 时,我忘记告诉它如果没有找到正在搜索的条目该怎么办。
我看过几个例子,并根据我不断增长的知识库,对我认为正确的代码进行了编码。 我收到一个错误,想了解它。
此外,优化是关键,所以我的目标之一是第一次学习编写优化代码。
Traceback (most recent call last):
File "/Users/corcoding/Desktop/projects/phonebook-project/phonebook.py", line 20, in <module>
print("phone number of" ,name1, "is", d1==[name])
NameError: name 'name' is not defined
代码:
def menu():
print("-------Lil Black Book--------")
print("[1] Look up an entry")
print("[2] Set an entry")
print("[3] delete an entry")
print("[4] List all entries")
print("[5] Quit")
print("what would you like to do (1-5)?")
menu()
d1 = {}
while True:
n=int(input("enter number [1-5]:-"))
if n ==2:
name=input("enter name:-")
phono=(input("enter phone number:-"))
d1[name]=phono
elif n==1:
name1=input("enter name to SEARCH for phone number in the phone book")
print("phone number of" ,name1, "is", d1[name])
if name1 != d1[name]:
print("entry not found")
if n== 3:
name1=input("enter name to delete:-")
d1.pop(name)
elif n==5:
break
我相信这段代码可以完成你正在寻找的东西:
d1 = {}
while True:
n = int(input("enter number [1-5]:-"))
if n == 1:
name1 = input("enter name to SEARCH for phone number in the phone book")
if not(name1 in d1.keys()):
name1 = input("please enter someone who is already in your book")
else:
print("phone number of" ,name1, "is", d1[name1])
elif n == 2:
name = input("enter name:-")
phono = (input("enter phone number:-"))
d1[name]=phono
elif n == 3:
name1 = input("enter name to delete:-")
d1.pop(name)
elif n == 4:
print(d1)
elif n == 5:
break
首先,我将if
语句按n
排序,这样更容易阅读。
请注意,缩进在 Python 中很重要! 无论您想在if
语句中运行什么,都必须在其中缩进。
主要问题是什么时候n = 1
。 这是因为我们不知道name1
是否存在于d1
中。 因此,在调用d1[name1]
之前,我们必须首先检查d1
中是否存在name1
。
向上移动验证并更改代码。
def menu():
print("-------Lil Black Book--------")
print("[1] Look up an entry")
print("[2] Set an entry")
print("[3] delete an entry")
print("[4] List all entries")
print("[5] Quit")
print("what would you like to do (1-5)?")
menu()
d1 = {}
while True:
n = int(input("enter number [1-5]:-"))
if n == 2:
name = input("enter name:-")
phono = (input("enter phone number:-"))
d1[name] = phono
elif n == 1:
name1 = input(
"enter name to SEARCH for phone number in the phone book")
if name1 != d1.get(name1,None): # Validate name exist
print("entry not found")
else:
print("phone number of", name1, "is", d1[name])
if n == 3:
name1 = input("enter name to delete:-")
d1.pop(name)
elif n == 5:
break
测试运行。
[1] Look up an entry
[2] Set an entry
[3] delete an entry
[4] List all entries
[5] Quit
what would you like to do (1-5)?
enter number [1-5]:-1
enter name to SEARCH for phone number in the phone bookDoe
entry not found
enter number [1-5]:-
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.