最近,我一直在编写代码,使用户可以根据婚姻状况以及是否有孩子来制定保险计划,并加上总数。唯一的问题是,当我想获取总数时,输出为:
NameError: name 'TotalCostRS' is not defined
此错误也适用于输入的任何其他选项,只是 “ TotalCost” 变量切换到未定义的变量之一。
我的代码:
import random
from random import randint
ReferenceID = int(random.randint(1000,9999))
ReferenceIDInstances = 0
FamilyStatus = False
LSCounter = int(1)
RSCounter = int(1)
HSCounter = int(1)
LFCounter = int(1)
RFCounter = int(1)
HFCounter = int(1)
LFCCounter = int(1)
RFCCounter = int(1)
HFCCounter = int(1)
while ReferenceID >= 10000 or ReferenceIDInstances!= 1:
ReferenceIDInstances += 1
print("This inquiry reference ID is:", ReferenceID)
print("If you are an administrator, enter ADMIN to view all inquiries.")
UserID = int(input("Please enter your four digit PIN:" + "\n"))
if(UserID <= 1000 or UserID >= 100000):
print("User ID is invalid. Please try again.")
else:
Continue = "Y"
while Continue != "N":
IndividualName = input("Please enter individual's full name:")
Individual = input("Please enter individual's plan level as L, R or H (Low, Regular or High):")
IndividualStatus = input("Is this individual single or have a family? (S/F):")
IndividualInheritance = input("Please enter status as C or NC for (children or no children):")
if(Individual == "L" and IndividualStatus == "S"):
TotalCostLS = float(36.25)
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print(TotalCostLS*LSCounter)
TC1 = TotalCostLS*LSCounter
LSCounter += 1
elif(Individual == "R" and IndividualStatus == "S"):
TotalCostRS = int(float(48.90))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$",TotalCostRS*RSCounter)
TC2 = TotalCostRS*RSCounter
RSCounter += 1
elif(Individual == "H" and IndividualStatus == "S"):
TotalCostHS = int(float(69.80))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$",TotalCostHS*HSCounter)
TC3 = TotalCostHS*HSCounter
HSCounter += 1
elif(IndividualStatus == "L" and Individual == "F" ):
StopAsyncIteration
TotalCostLF = int(float(56.50))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$",TotalCostLF*LFCounter)
TC4 = TotalCostLF*LFCounter
LFCounter += 1
elif(Individual == "R" and IndividualStatus == "F"):
TotalCostRF = int(float(74.70))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$",TotalCostRF*RFCounter)
TC5 = TotalCostRF*RFCounter
RFCounter += 1
elif(Individual == "H" and IndividualStatus == "F"):
TotalCostHF = int(float(99.45))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$",TotalCostHF*HFCounter)
TC6 = TotalCostHF*HFCounter
HFCounter += 1
elif(Individual == "L" and IndividualStatus == "F" and IndividualInheritance == "C"):
TotalCostLFC = int(float(98.35))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$",TotalCostLFC*LFCCounter)
TC7 = TotalCostLFC*LFCCounter
LFCCounter += 1
elif(Individual == "R" and IndividualStatus == "F" and IndividualInheritance == "C"):
TotalCostRFC = int(float(136.75))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$",TotalCostRFC*RFCCounter)
TC8 = TotalCostRFC*RFCCounter
RFCCounter += 1
elif(Individual == "H" and IndividualStatus == "F" and IndividualInheritance == "C"):
TotalCostHFC = int(float(174.55))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$",TotalCostHFC*HFCCounter)
TC9 = TotalCostHFC*HFCCounter
HFCCounter += 1
Continue = input("Continue? (Y/N):")
TC1 = TotalCostLS*LSCounter
TC2 = TotalCostRS*RSCounter
TC3 = TotalCostHS*HSCounter
TC4 = TotalCostLF*LFCounter
TC5 = TotalCostRF*RFCounter
TC6 = TotalCostHF*HFCounter
TC7 = TotalCostLFC*LFCCounter
TC8 = TotalCostRFC*RFCCounter
TC9 = TotalCostHFC*HFCCounter
sum(TC1,TC2,TC3,TC4,TC5,TC6,TC7,TC8,TC9)
这是我们被告知要重新创建的示例预期输出:
Please enter the client’s ID or ’0’ to quit: 5555 Please enter the plan level as L, R or H (Low, Regular or High):h Please enter the type of coverage (S for single and F for family): f Please enter status as C or NC for (children or no children): nc ID: 5555Payment: $99.45 Please enter the client’s ID or ’0’ to quit: 0 Total payment is $440.6
在解决该问题上可以获得的任何帮助将不胜感激。
答案 0 :(得分:0)
TotalCost*
变量的定义在if块内。如果这些块不运行(不满足条件),则不会定义这些变量。但是您有一个无条件的代码块,您希望在其中定义所有这些TotalCost*
变量。因此,错误。要修复,请无条件定义这些变量并将其初始化为一些合理的默认值。
import random
import sys
ReferenceID = int(random.randint(1000, 9999))
ReferenceIDInstances = 0
FamilyStatus = False
LSCounter = int(1)
RSCounter = int(1)
HSCounter = int(1)
LFCounter = int(1)
RFCounter = int(1)
HFCounter = int(1)
LFCCounter = int(1)
RFCCounter = int(1)
HFCCounter = int(1)
while ReferenceID >= 10000 or ReferenceIDInstances != 1:
ReferenceIDInstances += 1
print("This inquiry reference ID is:", ReferenceID)
print("If you are an administrator, enter ADMIN to view all inquiries.")
UserID = int(input("Please enter your four digit PIN:" + "\n"))
if UserID <= 1000 or UserID >= 100000:
print("User ID is invalid. Please try again.")
sys.exit(1)
else:
Continue = "Y"
while Continue != "N":
# Define default totals
TotalCostLS = 0
TotalCostRS = 0
TotalCostHS = 0
TotalCostLF = 0
TotalCostRF = 0
TotalCostHF = 0
TotalCostLFC = 0
TotalCostRFC = 0
TotalCostHFC = 0
IndividualName = input("Please enter individual's full name:")
Individual = input("Please enter individual's plan level as L, R or H (Low, Regular or High):")
IndividualStatus = input("Is this individual single or have a family? (S/F):")
IndividualInheritance = input("Please enter status as C or NC for (children or no children):")
if Individual == "L" and IndividualStatus == "S":
TotalCostLS = float(36.25)
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print(TotalCostLS * LSCounter)
TC1 = TotalCostLS * LSCounter
LSCounter += 1
elif Individual == "R" and IndividualStatus == "S":
TotalCostRS = int(float(48.90))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$", TotalCostRS * RSCounter)
TC2 = TotalCostRS * RSCounter
RSCounter += 1
elif Individual == "H" and IndividualStatus == "S":
TotalCostHS = int(float(69.80))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$", TotalCostHS * HSCounter)
TC3 = TotalCostHS * HSCounter
HSCounter += 1
elif IndividualStatus == "L" and Individual == "F":
TotalCostLF = int(float(56.50))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$", TotalCostLF * LFCounter)
TC4 = TotalCostLF * LFCounter
LFCounter += 1
elif Individual == "R" and IndividualStatus == "F":
TotalCostRF = int(float(74.70))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$", TotalCostRF * RFCounter)
TC5 = TotalCostRF * RFCounter
RFCounter += 1
elif Individual == "H" and IndividualStatus == "F":
TotalCostHF = int(float(99.45))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$", TotalCostHF * HFCounter)
TC6 = TotalCostHF * HFCounter
HFCounter += 1
elif Individual == "L" and IndividualStatus == "F" and IndividualInheritance == "C":
TotalCostLFC = int(float(98.35))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$", TotalCostLFC * LFCCounter)
TC7 = TotalCostLFC * LFCCounter
LFCCounter += 1
elif Individual == "R" and IndividualStatus == "F" and IndividualInheritance == "C":
TotalCostRFC = int(float(136.75))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$", TotalCostRFC * RFCCounter)
TC8 = TotalCostRFC * RFCCounter
RFCCounter += 1
elif Individual == "H" and IndividualStatus == "F" and IndividualInheritance == "C":
TotalCostHFC = int(float(174.55))
print(ReferenceID, "User ID#:", UserID)
print(IndividualName, "HAS BEEN REGISTERED.")
print("$", TotalCostHFC * HFCCounter)
TC9 = TotalCostHFC * HFCCounter
HFCCounter += 1
Continue = input("Continue? (Y/N):")
TC1 = TotalCostLS * LSCounter
TC2 = TotalCostRS * RSCounter
TC3 = TotalCostHS * HSCounter
TC4 = TotalCostLF * LFCounter
TC5 = TotalCostRF * RFCounter
TC6 = TotalCostHF * HFCounter
TC7 = TotalCostLFC * LFCCounter
TC8 = TotalCostRFC * RFCCounter
TC9 = TotalCostHFC * HFCCounter
print(sum([TC1, TC2, TC3, TC4, TC5, TC6, TC7, TC8, TC9]))