Python: "Name is not defined" 错误
Python: "Name is not defined" error
所以前几天我正在做家庭作业的补习课程作业。这是我的程序。我希望它是不言自明的。 (顺便说一句,这是 Python。)
def print_intro():
print ("Welcome to the tuition program. This program will calculate your tuition cost.")
def get_id_num():
grad_status = input("Is the student an undergrad or grad (U/G)? ")
id_num = int(input("Enter the student's ID Number: "))
while (grad_status == "U") and (id_num < 0):
print("Sorry, that is invalid. Please try again.")
id_num = int(input("Enter the student's ID Number: "))
while (grad_status == "G") and (id_num >= 0):
print("Sorry, that is invalid. Please try again.")
id_num = int(input("Enter the student's ID Number: "))
def get_info():
get_id_num()
age = int(input("Enter the student's age (numbers only): "))
residency = input("Is the student in-state or out-of-state (I/O)? ")
num_credits = int(input("How many hours of credit will the student take? "))
correct = input("Is all the above information correct (Y/N)? ")
while correct == "N":
print("Please enter the information correctly!")
get_info()
else:
get_base_tuition()
def get_base_tuition():
if (grad_status == "U") and (num_credits <= 6) and (residency == "I"):
initial_tuition = 2000
if (grad_status == "U") and (7 <= num_credits <= 11) and (residency == "I"):
initial_tuition = 3000
if (grad_status == "U") and (num_credits >= 12) and (residency == "I"):
initial_tuition = 3800
if (grad_status == "U") and (num_credits <= 6) and (residency == "O"):
initial_tuition = 2000
if (grad_status == "U") and (7 <= num_credits <= 11) and (residency == "O"):
initial_tuition = 3000
if (grad_status == "U") and (num_credits >= 12) and (residency == "O"):
initial_tuition = 9000
if (grad_status == "G") and (num_credits <= 6) and (residency == "I"):
initial_tuition = 2000
if (grad_status == "G") and (7 <= num_credits <= 11) and (residency == "I"):
initial_tuition = 2500
if (grad_status == "G") and (num_credits >= 12) and (residency == "I"):
initial_tuition = 4400
if (grad_status == "G") and (num_credits <= 6) and (residency == "O"):
initial_tuition = 2000
if (grad_status == "G") and (7 <= num_credits <= 11) and (residency == "O"):
initial_tuition = 3700
if (grad_status == "G") and (num_credits >= 12) and (residency == "O"):
initial_tuition = 4400
print(initial_tuition)
所以在我 运行 这个之后,get_info() 函数 运行 没问题,直到它进入 get_base_tuition() 函数。我收到此错误:
line 28, in get_base_tuition
if (grad_status == "U") and (num_credits <= 6) and (residency == "I"):
NameError: name 'grad_status' is not defined
我应该在我的函数中添加参数吗?我被困住了,真的不知道该怎么办。我知道如果我在 get_base_tuition() 中包含变量 "grad_status"、"num_credits" 和 "residency" 或在 Python [=37= 中定义变量]在运行ning get_base_tuition()之前,那当然可以了。但是,如果我像现在这样将它放在另一个 get_base_tuition() 中,它将无法工作。有什么方法可以使 get_base_tuition() 函数 运行 而不必将变量放在 get_base_tuition() 中?因为我已经将这些变量放在函数 get_id_num() 和 get_info() 中。
感谢帮助,谢谢。
如果您想了解基本学费的计算方式,我将作业附在此处:
Assignment Page 2
您需要阅读并理解 Python 中范围的概念。这是获得 basics on scope
的好答案
具体来说,在您的代码中,grad_status 变量是在 get_id_num 函数中定义的。一旦程序退出该函数,该范围内定义的所有变量都将被删除,并且不会存在于其他函数的范围内。如果您有多个函数需要的变量,则需要在全局范围内定义该变量或将其作为参数传递给需要它的每个函数。
所以前几天我正在做家庭作业的补习课程作业。这是我的程序。我希望它是不言自明的。 (顺便说一句,这是 Python。)
def print_intro():
print ("Welcome to the tuition program. This program will calculate your tuition cost.")
def get_id_num():
grad_status = input("Is the student an undergrad or grad (U/G)? ")
id_num = int(input("Enter the student's ID Number: "))
while (grad_status == "U") and (id_num < 0):
print("Sorry, that is invalid. Please try again.")
id_num = int(input("Enter the student's ID Number: "))
while (grad_status == "G") and (id_num >= 0):
print("Sorry, that is invalid. Please try again.")
id_num = int(input("Enter the student's ID Number: "))
def get_info():
get_id_num()
age = int(input("Enter the student's age (numbers only): "))
residency = input("Is the student in-state or out-of-state (I/O)? ")
num_credits = int(input("How many hours of credit will the student take? "))
correct = input("Is all the above information correct (Y/N)? ")
while correct == "N":
print("Please enter the information correctly!")
get_info()
else:
get_base_tuition()
def get_base_tuition():
if (grad_status == "U") and (num_credits <= 6) and (residency == "I"):
initial_tuition = 2000
if (grad_status == "U") and (7 <= num_credits <= 11) and (residency == "I"):
initial_tuition = 3000
if (grad_status == "U") and (num_credits >= 12) and (residency == "I"):
initial_tuition = 3800
if (grad_status == "U") and (num_credits <= 6) and (residency == "O"):
initial_tuition = 2000
if (grad_status == "U") and (7 <= num_credits <= 11) and (residency == "O"):
initial_tuition = 3000
if (grad_status == "U") and (num_credits >= 12) and (residency == "O"):
initial_tuition = 9000
if (grad_status == "G") and (num_credits <= 6) and (residency == "I"):
initial_tuition = 2000
if (grad_status == "G") and (7 <= num_credits <= 11) and (residency == "I"):
initial_tuition = 2500
if (grad_status == "G") and (num_credits >= 12) and (residency == "I"):
initial_tuition = 4400
if (grad_status == "G") and (num_credits <= 6) and (residency == "O"):
initial_tuition = 2000
if (grad_status == "G") and (7 <= num_credits <= 11) and (residency == "O"):
initial_tuition = 3700
if (grad_status == "G") and (num_credits >= 12) and (residency == "O"):
initial_tuition = 4400
print(initial_tuition)
所以在我 运行 这个之后,get_info() 函数 运行 没问题,直到它进入 get_base_tuition() 函数。我收到此错误:
line 28, in get_base_tuition
if (grad_status == "U") and (num_credits <= 6) and (residency == "I"):
NameError: name 'grad_status' is not defined
我应该在我的函数中添加参数吗?我被困住了,真的不知道该怎么办。我知道如果我在 get_base_tuition() 中包含变量 "grad_status"、"num_credits" 和 "residency" 或在 Python [=37= 中定义变量]在运行ning get_base_tuition()之前,那当然可以了。但是,如果我像现在这样将它放在另一个 get_base_tuition() 中,它将无法工作。有什么方法可以使 get_base_tuition() 函数 运行 而不必将变量放在 get_base_tuition() 中?因为我已经将这些变量放在函数 get_id_num() 和 get_info() 中。 感谢帮助,谢谢。
如果您想了解基本学费的计算方式,我将作业附在此处: Assignment Page 2
您需要阅读并理解 Python 中范围的概念。这是获得 basics on scope
的好答案具体来说,在您的代码中,grad_status 变量是在 get_id_num 函数中定义的。一旦程序退出该函数,该范围内定义的所有变量都将被删除,并且不会存在于其他函数的范围内。如果您有多个函数需要的变量,则需要在全局范围内定义该变量或将其作为参数传递给需要它的每个函数。