递归第二次不起作用。 - python
recursion isn't working 2nd time. - python
def twothousand(amt):
n=500
div1=amt//n
mod1=amt%n
return (mod1,n,div1)
def fivehundred(amt):
n=200
div1=amt//n
mod1=amt%n
return (mod1,n,div1)
def calculate(amt):
if amt <10:
print("hi")
elif amt>=200 and amt<500:
mod1,n,div1=fivehundred(amt)
return (mod1,n,div1)
#the above return statement isn't returning anything.
#That is, now the program doesn't go to the main function 2nd time.
elif amt>=500 and amt<2000:
mod1,n,div1=twothousand(amt)
return (mod1,n,div1)
def main1():
amt=int(input("Enter the amount: "))
mod1,n,div1=calculate(amt)
print (mod1,n,div1)
#The above print function executes only once.
if mod1!=0:
amt=mod1
calculate(amt)
if __name__=="__main__":
main1()
输出:
Enter the amount: 1700
200 500 3
预期输出:
Enter the amount: 1700
200 500 3
0 200 1
我无法在第二次调用 calculate() 函数后执行 return 语句,如注释中所写。
我没有得到第二个输出。 python 的新手,请帮助。
抱歉没有早点更新逻辑。
逻辑是:
当用户要求金额为 1700 时,他只能使用 500 和 200 货币获得该金额。所以,第一个输出是 - 200 500 3 ;即 3 个 500 货币.. 剩下的是 200。
我想调用函数计算直到值 mod1 == 0。
您的 main() 函数应如下所示:
def main1():
amt=int(input("Enter the amount: "))
mod1,n,div1=calculate(amt)
print (mod1,n,div1)
#The above print function executes only once.
if mod1!=0:
amt=mod1
mod1,n,div1 = calculate(amt)
print (mod1,n,div1)
def twothousand(amt):
n=500
div1=amt//n
mod1=amt%n
return (mod1,n,div1)
def fivehundred(amt):
n=200
div1=amt//n
mod1=amt%n
return (mod1,n,div1)
def calculate(amt):
if amt <10:
print("hi")
elif amt>=200 and amt<500:
mod1,n,div1=fivehundred(amt)
return (mod1,n,div1)
#the above return statement isn't returning anything.
#That is, now the program doesn't go to the main function 2nd time.
elif amt>=500 and amt<2000:
mod1,n,div1=twothousand(amt)
return (mod1,n,div1)
def main1():
amt=int(input("Enter the amount: "))
mod1,n,div1=calculate(amt)
print (mod1,n,div1)
#The above print function executes only once.
if mod1!=0:
amt=mod1
calculate(amt)
if __name__=="__main__":
main1()
输出:
Enter the amount: 1700
200 500 3
预期输出:
Enter the amount: 1700
200 500 3
0 200 1
我无法在第二次调用 calculate() 函数后执行 return 语句,如注释中所写。 我没有得到第二个输出。 python 的新手,请帮助。
抱歉没有早点更新逻辑。 逻辑是:
当用户要求金额为 1700 时,他只能使用 500 和 200 货币获得该金额。所以,第一个输出是 - 200 500 3 ;即 3 个 500 货币.. 剩下的是 200。 我想调用函数计算直到值 mod1 == 0。
您的 main() 函数应如下所示:
def main1():
amt=int(input("Enter the amount: "))
mod1,n,div1=calculate(amt)
print (mod1,n,div1)
#The above print function executes only once.
if mod1!=0:
amt=mod1
mod1,n,div1 = calculate(amt)
print (mod1,n,div1)