我有这个家庭作业,我不打算改变这部分代码
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 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()
但每次我运行代码时,它都会告诉我进入4次宿舍。但我希望它能说进入便士,输入镍币等等。有人能帮我吗?我真的很困惑如何在不改变核心代码的情况下做到这一点
答案 0 :(得分:6)
您不断重新定义get_input
功能。每次执行此操作时,旧的get_input
功能都会黯然失色,变得不再可用。所以,最后,你只有get_input
你做的季度。
您需要重命名您的函数,以便每个函数都有一个不会掩盖其他函数的唯一名称。为什么不这样做:
def get_pennies(...):
...
def get_nickels(...):
...
def get_dimes(...):
...
def get_quarters(...):
...
或者,更好的是,制作一个可以处理所有硬币类型的功能。 (基本)示例如下:
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
然后您将此函数称为:
pennies = get_coin('pennies')
nickels = get_coin('nickels')
...
答案 1 :(得分:4)
作为iCodez explains,每次撰写def get_input(dimes):
或def get_input(quarters):
时,您只需为函数get_input
创建新定义,并隐藏旧定义。参数具有不同名称的事实并不意味着什么。 (怎么可能?当你写pennies = get_input("Enter pennies : ")
时,Python如何知道你想要调用get_input(pennies)
而不是get_input(quarters)
?)
您可以通过为每个人提供一个唯一名称(get_pennies
,get_nickels
等)来解决此问题,并通过唯一名称进行调用。
另外,请注意,您实际上并非使用参数pennies
或nickels
或其他任何内容。你正在使用一个提示字符串,并且不采取任何措施。
这很重要,因为这意味着你可以将它们全部重构为一个函数。如果你看看你写的实现,它们已经几乎完全相同了;唯一的区别在于您打印的提示字符串。并且您已经在每个呼叫中获得了不同的提示字符串。那么,为什么不使用呢?
def get_input(prompt):
number = input(prompt)
while int(number) < 0:
print("Error: money cannot be negative")
number = int(input(prompt))
return number
现在,pennies = get_input("Enter pennies : ")
会要求您提供便士,nickels = get_input("Enter nickels : ")
会要求您提供镍币等。
作为旁注,所有四个实现(以及我的合并版本()中都存在严重错误。如果您的第一个输入是非负数,则函数将返回字符串,如"3"
;如果那个是负数,但后者不是,那么函数将返回整数值,如5
。你可能想要使第一个number = …
和第二个相同。