Python 为什么我会出现这个错误;“名称未定义”;什么时候?

Python 为什么我会出现这个错误;“名称未定义”;什么时候?,python,Python,为什么我会犯这个错误?这幅画有细节。我需要得到_花费的值以打印适当的次数。所以,假设它在循环中运行了3次,我需要它打印3。我想这就是1的来源。我不喜欢 pennies=10 镍币=10 一角硬币=10 四分之一=10 打印(“\n请访问更改制作程序。”) 输入(“\n输入购买价格(xx.xx)或'q'退出:”) 当处于较低位置时()q': 美元长度,美分长度=英寸长度拆分(“.”) 如果在较低的位置(='q': 退出 in_int=int(浮点(in_str)*100) 如果in_int0: 付

为什么我会犯这个错误?这幅画有细节。我需要得到_花费的值以打印适当的次数。所以,假设它在循环中运行了3次,我需要它打印3。我想这就是1的来源。我不喜欢

pennies=10
镍币=10
一角硬币=10
四分之一=10
打印(“\n请访问更改制作程序。”)
输入(“\n输入购买价格(xx.xx)或'q'退出:”)
当处于较低位置时()q':
美元长度,美分长度=英寸长度拆分(“.”)
如果在较低的位置(='q':
退出
in_int=int(浮点(in_str)*100)
如果in_int<0:
打印(“错误:购买价格必须为非负。”)
输入(“\n输入购买价格(xx.xx)或'q'退出:”)
如果in_int>0:
付款=输入(“\n输入已支付的美元:”)
付款额_int=int(浮动(付款)*100)
变更=付款金额-金额
#确定是否存在付款输入
如果付款金额<单位:
打印(“错误:付款不足。”)
付款=输入(“\n输入已支付的美元:”)
付款额_int=int(浮动(付款)*100)
如果更改==0:
打印(“无更改”)
#确定还剩下多少个25美分、10美分、5美分和1美分
当更改>=25且四分之一>0时:
改变=改变-25
四分之一花费=0
季度花费+=1
季度=季度-季度花费
打印(已用季度)
当更改>=10且一角硬币>0时:
改变=改变-10
花费的十美分=0
花费的十美分+=1
一角硬币=一角硬币-花费的一角硬币
打印(花费的一角钱)
当更改>=5且镍币>0时:
改变=改变-5
镍币=0
花费的镍币+=1
镍币=镍币-花费的镍币
印刷品(五分镍币)
当更改>=1且便士>0时:
改变=改变-1
花费的便士=0
花费的便士+=1
便士=便士-花费的便士
如果四分之一=0,一角硬币=0,五分镍币=0,便士=0:
打印(“错误:硬币用完了。”)
退出
打印(“\n收取以下款项:”)
打印(10个季度,“季度”)
打印(“\n库存:”,四分之一,“四分之一”,一角,“一角”,五分镍币,“五分镍币”,一分镍币,“一分镍币”)
输入(“\n输入购买价格(xx.xx)或'q'退出:”)
便士=便士
镍币=镍币
一角硬币=一角硬币
四分之一

此错误意味着您在尝试使用之前没有定义花费的镍币值

我猜错误在这行:
print(五分镍币)

可能发生的情况是,用于为该变量赋值的
while
语句条件在您尝试运行它时不是true,因此它没有定义,但您仍然尝试使用它


尝试在
while
循环之前进行调试,以查看那里到底发生了什么。

您只在while循环中定义并初始化了这个变量
nickels\u

但是,如果不满足条件,程序将跳过循环并跳转以执行此
print(nickels\u-spend)
语句,其中尚未定义此变量

你也可以

  • 将print语句移动到while循环中
  • 在while循环外部定义并初始化此变量

  • 取决于程序的目的

    代码中的错误具体发生在哪里?哦,我猜图片没有上传。我的b。它说“花费的镍币”是未定义的,即使它是。它会对以“_pend”结尾的其他变量执行此操作,因此我认为它与if语句有关,但我不知道确切的内容,但知道代码中的位置。图片显示的是第70行,但我不知道这段代码的位置。因为
    print
    的缩进不正确,它不在
    while
    中,所以在
    while
    范围
    之外,没有定义镍币分数。@user7433120哦,哇,它在打印行上。没想到。我照阿曼说的做了,我把语句移到while循环的内部。但是,现在只打印第一个while循环结果,通常只打印打印(花费的季度)。我会尝试在循环之外初始化它们,这可能是因为条件失败,程序没有进入该循环,如果不是你想要的,请修改你的逻辑,如果你觉得答案有用,请向上投票
    
    pennies = 10
    nickels = 10
    dimes = 10
    quarters = 10
    
    print("\nWelcome to change-making program.")
    in_str = input("\nEnter the purchase price (xx.xx) or `q' to quit: ")
    
    while in_str.lower() != 'q':
        dollar_str, cents_str = in_str.split(".")
    
        if in_str.lower() == 'q':
            quit()
    
        in_int = int(float(in_str) * 100)
    
        if in_int < 0:
            print("Error: purchase price must be non-negative.")
            in_str = input("\nEnter the purchase price (xx.xx) or `q' to quit: ")
    
        if in_int > 0:
            payment = input("\nInput dollars paid: ")
            payment_int = int(float(payment) * 100)
            change = payment_int - in_int
    
            #determines if there payment input
            if payment_int < in_int:
                print("Error: Insufficient payment.")
                payment = input("\nInput dollars paid: ")
                payment_int = int(float(payment) * 100)
    
    
            if change == 0:
                print("No change.")
    
            #determines how many quarters, dimes, nickels, and pennies are left
            while change >= 25 and quarters > 0:
                change = change - 25
                quarters_spent = 0
                quarters_spent += 1
                quarters = quarters - quarters_spent
            print(quarters_spent)
    
            while change >= 10 and dimes > 0:
                change = change - 10
                dimes_spent = 0
                dimes_spent += 1
                dimes = dimes - dimes_spent
            print(dimes_spent)
    
            while change >= 5 and nickels > 0:
                change = change - 5
                nickels_spent = 0
                nickels_spent += 1
                nickels = nickels - nickels_spent
            print(nickels_spent)
    
            while change >= 1 and pennies > 0:
                change = change - 1
                pennies_spent = 0
                pennies_spent += 1
                pennies = pennies - pennies_spent
    
            if quarters == 0 and dimes == 0 and nickels == 0 and pennies == 0:
                print("Error: ran out of coins.")
                quit()
    
            print("\nCollect Payment Below:")
            print(10 - quarters, "Quarters")
    
            print("\nStock: ", quarters, "Quarters, ", dimes, " Dimes, ", nickels, " Nickels, ", pennies, " Pennies ")
    
            in_str = input("\nEnter the purchase price (xx.xx) or `q' to quit: ")
    
            pennies = pennies
            nickels = nickels
            dimes = dimes
            quarters = quarters