递归第二次不起作用。-蟒


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((函数调用第二次发生后,我无法执行返回语句,如注释中所写。我没有得到第二个输出。蟒蛇新手,请帮忙。

很抱歉没有提前更新逻辑。逻辑是:

当用户要求1700的金额时,他只能使用500和200的货币获得该金额。因此,第一个输出是-200 500 3;即500货币的3个数字。。剩余的是200。我想调用函数calcule,直到值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)

相关内容

  • 没有找到相关文章

最新更新