NameError:未定义名称“ TotalCostRS”

时间:2019-10-02 18:15:51

标签: python

最近,我一直在编写代码,使用户可以根据婚姻状况以及是否有孩子来制定保险计划,并加上总数。唯一的问题是,当我想获取总数时,输出为:

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 

在解决该问题上可以获得的任何帮助将不胜感激。

1 个答案:

答案 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]))