Python:对传递到函数中的变量执行的操作不是';不正常工作 def支付(成本,选择,): 存款=0 赤字=成本-存款 更改=存款-成本 打印(“该项目将花费您美元”,成本,”) 存款=浮动(输入(“输入您的金额(例如,1.5美元兑换1.50美元,50美元兑换0.50美元等):\n--\n”)) 如果存款=成本: 赤字-=浮动(输入(“请输入额外的美元”+str(赤字)+”)) 如果赤字>成本: 打印(“您的更改为$”,更改为“.”) 打印(“感谢您购买商品”,选择“.您的零钱是$”,零钱“.”) returnyn=输入(“您想再次购买吗?用y或n回答\n”) 如果returnyn==“Y”或returnyn==“Y”: 返回 如果存款=成本: 打印(“感谢您购买商品”,选择“.”) returnyn=输入(“您想再次购买吗?用y或n回答\n”) 如果returnyn==“Y”或returnyn==“Y”: 返回 如果存款>成本: 打印(“感谢您购买商品”,选择“.您的零钱是$”,零钱“.”) returnyn=输入(“您想再次购买吗?用y或n回答\n”) 如果returnyn==“Y”或returnyn==“Y”: 返回 其他: 退出() def main(): 成本=0 选择=0 循环计数=0 标志=0 打印(“---欢迎来到豪威公司。文多龙---\n--请在下面进行选择---\n”) 当loopCount6或选择

Python:对传递到函数中的变量执行的操作不是';不正常工作 def支付(成本,选择,): 存款=0 赤字=成本-存款 更改=存款-成本 打印(“该项目将花费您美元”,成本,”) 存款=浮动(输入(“输入您的金额(例如,1.5美元兑换1.50美元,50美元兑换0.50美元等):\n--\n”)) 如果存款=成本: 赤字-=浮动(输入(“请输入额外的美元”+str(赤字)+”)) 如果赤字>成本: 打印(“您的更改为$”,更改为“.”) 打印(“感谢您购买商品”,选择“.您的零钱是$”,零钱“.”) returnyn=输入(“您想再次购买吗?用y或n回答\n”) 如果returnyn==“Y”或returnyn==“Y”: 返回 如果存款=成本: 打印(“感谢您购买商品”,选择“.”) returnyn=输入(“您想再次购买吗?用y或n回答\n”) 如果returnyn==“Y”或returnyn==“Y”: 返回 如果存款>成本: 打印(“感谢您购买商品”,选择“.您的零钱是$”,零钱“.”) returnyn=输入(“您想再次购买吗?用y或n回答\n”) 如果returnyn==“Y”或returnyn==“Y”: 返回 其他: 退出() def main(): 成本=0 选择=0 循环计数=0 标志=0 打印(“---欢迎来到豪威公司。文多龙---\n--请在下面进行选择---\n”) 当loopCount6或选择,python,function,loops,variables,indentation,Python,Function,Loops,Variables,Indentation,你好。我正在做一个自动售货机程序。传递到“pay”函数中的变量表现得不稳定。例如,如果您输入的金额不足,并且它请求额外的输入,那么它会请求项目的成本,而不是成本存款(赤字)。它也不会正确计算更改。例如,如果我选择项目1(1.75)并支付2美元,而不是给我正确的零钱金额,它会给我以下信息: “感谢您购买物品#1。您的零钱是-1.75美元。” 我假设支付功能有问题,但我不知道是什么。这件事我已经琢磨了好几个小时了。物品所需的额外金额不正确与返还的找零金额不正确之间肯定存在联系。循环有什么问题吗?缩进

你好。我正在做一个自动售货机程序。传递到“pay”函数中的变量表现得不稳定。例如,如果您输入的金额不足,并且它请求额外的输入,那么它会请求项目的成本,而不是成本存款(赤字)。它也不会正确计算更改。例如,如果我选择项目1(1.75)并支付2美元,而不是给我正确的零钱金额,它会给我以下信息:

“感谢您购买物品#1。您的零钱是-1.75美元。”


我假设支付功能有问题,但我不知道是什么。这件事我已经琢磨了好几个小时了。物品所需的额外金额不正确与返还的找零金额不正确之间肯定存在联系。循环有什么问题吗?缩进?请原谅,如果事情真的很简单的话——我只做了几个月的编程,还有很多东西要学。

你计算的顺序不对。在以下代码中:

def pay(cost, selection,):
    deposit = 0
    deficit = cost - deposit
    change = deposit - cost
    print("That item will cost you $",cost,".")
    deposit = float(input("Enter your money amount (e.g. 1.5 for $1.50, .50 for $0.50, etc.):\n--\n"))
    if deposit < cost:
        while deficit >= cost:
            deficit -= float(input("Please enter an additional $" + str(deficit) + "."))
            if deficit > cost:
                print("Your change is $",change,".")
                print("Thank you for purchasing item#",selection,". Your change is $",change,".")
            returnyn = input("Would you like to make another purchase? Answer with a y or n\n")
            if returnyn == "Y" or returnyn == "y":

                return
    if deposit == cost:
            print("Thank you for purchasing item#",selection,".")
            returnyn = input("Would you like to make another purchase? Answer with a y or n\n")
            if returnyn == "Y" or returnyn == "y":
                return

    if deposit > cost:
        print("Thank you for purchasing item#",selection,". Your change is $",change,".")
        returnyn = input("Would you like to make another purchase? Answer with a y or n\n")
    if returnyn == "Y" or returnyn == "y":

        return

    else:
            exit()


def main():
    cost = 0
selection = 0
loopCount = 0
flag = 0
print("--- Welcome to the HOWE CO. VENDOTRON ---\n  --- Please make a selection below ---\n")
while loopCount < 3 or flag == 0:
    loopCount +=1
    if loopCount == 1:
        print("You have three transactions left.")
    if loopCount == 2:
        print("You have two transactions left.")
    if loopCount == 3:
        print("You have one transaction left.")
    if loopCount == 4:
        print(("Thank you for your business!"))
        break
    print ("Item#\tCost")
    print("1)\t\t$1.75\n2)\t\t$.75\n3)\t\t$.90\n4)\t\t$.75\n5)\t\t$1.25\n6)\t\t$.75\n7)\t\tExit transaction\n-----\n")
    selection = int(input("Please enter the item number:\n"))
    if selection > 6 or selection < 1:
        print("Invalid input.")
    if selection == 1:
        cost = 1.75
        x = pay(cost,selection,)
    if selection == 2:
        cost = 0.75
        x = pay(cost,selection,)
    if selection == 3:
        cost = 0.90
        x = pay(cost,selection,)
    if selection == 4:
        cost = 0.75
        x = pay(cost,selection,)
    if selection == 5:
        cost = 1.25
        x = pay(cost,selection,)
    if selection == 6:
        cost = 0.75
        x = pay(cost,selection,)
    if selection == 7:
          print(("Thank you for your business!"))
          break






main()

代码可能会使用许多其他清理,但这正是造成所述问题的原因。

您需要修复代码缩进,现在我们无法复制并粘贴该缩进以帮助调试/提供建议。是的,当我将其复制到框中时,它被窃听了,对此表示抱歉。现在已修复,您正在将调用
pay
的结果分配给
x
,但
pay
从不返回任何内容(隐式返回
None
)。为什么?我认为这些函数将返回的唯一一件事是对最终统计函数项的更改,我还没有完成。除非当前问题的原因是缺少退货。
deposit = 0
deficit = cost - deposit
change = deposit - cost
print("That item will cost you $",cost,".")
deposit = float(input("Enter your money amount (e.g. 1.5 for $1.50, .50 for $0.50, etc.):\n--\n"))
if deposit < cost:
    while deficit >= cost:
print("That item will cost you $",cost,".")
deposit = float(input("Enter your money amount (e.g. 1.5 for $1.50, .50 for $0.50, etc.):\n--\n"))
deficit = cost - deposit
change = -deficit
if deficit > 0:
    while deficit > 0: