簡體   English   中英

為什么我會收到此錯誤“名稱未定義”?

[英]Why am i getting this error "name is not defined" when it is?

為什么我收到這個錯誤? 圖片有細節。 我需要獲取 _spent 值來打印適當的次數。 所以,假設它通過循環 3 次,我需要它打印 3。我認為這就是 1 的來源。 我不喜歡! 在此處輸入圖片說明

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

此錯誤意味着您在嘗試使用它之前沒有定義值nickels_spent

我猜錯誤在這一行: print (nickels_spent)

可能發生的情況是,當您嘗試運行該變量時,用於為該變量賦值的while語句條件不正確,因此未定義它,但您仍然嘗試使用它。

while循環之前嘗試調試以查看那里到底發生了什么。

您只在 while 循環中定義並初始化了這個變量nickels_spent

但是,如果不滿足條件,程序將跳過循環並跳轉到此變量尚未定義的print(nickels_spent)語句執行。

你可以

  1. 將打印語句移動到 while 循環中

或者

  1. 在 while 循環之外定義並初始化此變量。

取決於你的程序的目的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM