我这里有一个代码,它使用函数来绘制输出。我一直在"提示"没有定义,但是在功能过滤器中是否已经说明了? [在此输入图像说明] [1]
def menu():
print ("[1] Compute Area of a Circle")
print ("[2] Compute Perimeter of a Rectangle")
print ("[3] Compute Volume of a Cone")
print ("[4] Compute Slope of a Straight Line")
print ("[5] Exit")
#Determining the input of the user
choice = filterer("Choose from the menu:")
#function for the filter
def filterer(prompt):
while True:
choice = float(input(prompt))
if choice > 5 or choice < 1:
print ("Must input integer between 1 and 5. Input again")
elif choice.is_integer == False:
print ("Must put an integer. Input again.")
else:
return prompt
filterer(choice)
答案 0 :(得分:1)
@Hamms和@stybl都在评论中回答了这个问题,但是,为了清楚起见,你需要改变
filterer(prompt)
进入
filterer("do some amazing thing or something")
除了你想要用作提示而不是&#34的引用之外,做一些令人惊奇的事情。&#34;
关键是要考虑代码的范围。 filterer(prompt)
假定提示是由其调用的时间定义的。但是你没有定义提示就会调用它。您可以根据需要定义提示,例如
prompt = "do something super groovy"
filterer(prompt)
答案 1 :(得分:1)
范围是一个有趣的概念。从本质上讲,变量在超出范围时会死亡。这使您可以在代码中使用多个名为i
的变量,只要它们的使用不重叠。
您在代码中遇到了问题。当您调用函数filterer('Choose from the menu:')
时,您将Choose from the menu
字符串传递给变量prompt
,该变量仅存在于函数filterer
中。
filterer
函数在行return prompt
结束,其中变量prompt
包含的值被传递回变量choice
(其范围为功能menu
)由行choice = filterer('Choose from the menu')
。
由于filterer
函数已结束,prompt
变量已超出范围,因此不再存在。由于您确实将提示值返回menu
变量choice
,因此您在menu
函数中确实拥有该值。
答案 2 :(得分:1)
其他人指出了主要问题,即你试图引用一个在该范围内不存在的变量(prompt
)。
那就是说,我认为你不想两次打电话给filterer
,我认为你不希望它返回提示,而是做出选择。此外,您的整数测试不对。
这是完整的工作代码:
def filterer(prompt):
while True:
try:
choice = int(input(prompt))
except ValueError:
# Value couldn't be parsed as an integer
print("You must enter an integer. Try again.")
else:
# Value was successfully parsed
if choice > 5 or choice < 1:
print("Must input integer between 1 and 5. Input again")
else:
return choice # <-- changed from prompt
def menu():
print("[1] Compute Area of a Circle")
print("[2] Compute Perimeter of a Rectangle")
print("[3] Compute Volume of a Cone")
print("[4] Compute Slope of a Straight Line")
print("[5] Exit")
# Determining the input of the user
choice = filterer("Choose from the menu: ")
print("You chose: {}".format(choice))
menu()
答案 3 :(得分:0)
提示符在函数过滤器的范围内定义,因此无法在函数外部访问。这一行:
filterer(prompt)
应改为:
foo=filterer(bar)
在执行此操作之前,必须先定义变量栏。