为什么我的代码一直要求我四次宿舍?

0 python input function

我有这个家庭作业,我不打算改变这部分代码

def main():

    pennies = get_input("Enter pennies : ")
    nickels = get_input("Enter nickels : ")
    dimes = get_input("Enter dimes : ")
    quarters = get_input("Enter quarters : ")

    print("You entered : ")
    print("\tPennies  : " , pennies)
    print("\tNickels  : " , nickels)
    print("\tDimes    : " , dimes)
    print("\tQuarters : " , quarters)

    total_value = get_total(pennies, nickels, dimes, quarters)
    dollars, cents = get_left_over_cents(pennies, nickels, dimes, quarters)
    left_over_cents = get_left_over_cents(pennies, nickels, dimes, quarters)
    print("Total = $", format(total_value,".02f"), sep="")
    print('You have', dollars, "dollars and", cents, "cent(s)")
Run Code Online (Sandbox Code Playgroud)

这是我完成的作业代码

def main():
    pennies = get_input("Enter pennies : ")
    nickels = get_input("Enter nickels : ")
    dimes = get_input("Enter dimes : ")
    quarters = get_input("Enter quarters : ")

    print("You entered : ")
    print("\tPennies  : " , pennies)
    print("\tNickels  : " , nickels)
    print("\tDimes    : " , dimes)
    print("\tQuarters : " , quarters)

    total_value = get_total(pennies, nickels, dimes, quarters)
    dollars, cents = get_left_over_cents(pennies, nickels, dimes, quarters)
    left_over_cents = get_left_over_cents(pennies, nickels, dimes, quarters)
    print("Total = $", format(total_value,".02f"), sep="")
    print('You have', dollars, "dollars and", cents, "cent(s)")

def get_input(pennies):
    pennies = input("Enter Pennies: ")
    while int(pennies) < 0:
        print("Error: money cannot be negative")
        pennies = int(input("Enter correct amount of pennies: "))
    return pennies

def get_input(nickels):
    nickels = input("Enter nickels: ")
    while int(nickels) < 0:
        print("Error: money cannot be negative")
        nickels = int(input("Enter correct amount of nickels: "))
    return nickels

def get_input(dimes):
    dimes = input("Enter dimes: ")
    while int(dimes) < 0:
        print("Error: money cannot be negative")
        dimes = int(input("Enter correct amount of dimes: "))
    return dimes

def get_input(quarters):
    quarters = input("Enter quarters: ")
    while int(quarters) < 0:
        print("Error: money cannot be negative")
        quarters = int(input("Enter correct amount of quarters: "))
    return quarters

def get_total(pennies, nickels, dimes, quarters):
    amount_pennies = (int(pennies) * .01)
    amount_nickels = (int(nickels) * .05)
    amount_dimes = (int(dimes) * .10)
    amount_quarters = (int(quarters) * .25)
    return amount_pennies + amount_nickels + amount_dimes + amount_quarters

def get_left_over_cents(pennies, nickels, dimes, quarters):
    total = int(pennies) + 5*int(nickels) + 10*int(dimes) + 25*int(quarters)
    return total // 100, total % 100

main()
Run Code Online (Sandbox Code Playgroud)

但每次我运行代码时,它都会告诉我进入4次宿舍.但我希望它能说进入便士,输入镍币等等.有人能帮我吗?我真的很困惑如何在不改变核心代码的情况下做到这一点

iCo*_*dez 6

你不断重新定义你的get_input功能.每次执行此操作时,旧get_input功能都会蒙上阴影,变得不再可用.所以,最后,你只有get_input你为宿舍做的.

您需要重命名您的函数,以便每个函数都有一个唯一的名称,不会掩盖另一个函数.为什么不这样做:

def get_pennies(...):
    ...

def get_nickels(...):
    ...

def get_dimes(...):
    ...

def get_quarters(...):
    ...
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,制作一个可以处理所有硬币类型的功能.(基本)示例如下:

def get_coin(coin_type):
    amount = int(input("Enter " + coin_type + ": "))  # BTW, you forgot to call int() up here before.
    while amount < 0:
        print("Error: money cannot be negative")
        amount = int(input("Enter correct amount of " + coin_type + ": "))
    return amount
Run Code Online (Sandbox Code Playgroud)

然后,您将此函数称为:

pennies = get_coin('pennies')
nickels = get_coin('nickels')
...
Run Code Online (Sandbox Code Playgroud)