循环和累加器模式

2024-04-24 20:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个古老的传说,一个智者,当他提供任何奖励,他想要,要求他的第一个孙子得到1枚硬币,他的第二个孙子得到两倍于第一个,第三个得到两倍于第二个,以此类推。最后一个孙子会得到多少硬币?孙子们总共能得到多少硬币?您的函数应该接受任意数量的孙子,并返回一个声明来解决这两个问题。到目前为止,我已经知道了

def grandchild_coins(number_of_grand_children):# Not finished
    Coins=1
    for grand_child in range(number_of_grand_children):
        Coins=Coins*2
    return ' Grand child' + str(grand_child) + ' ' + str(Coins) + ' Coins'
   grandchild_coins(10)
   Out[33]: ' Grand child9 1024 Coins'

我怎样才能让它列出每个孙子有多少硬币?你知道吗

谢谢你们的帮助

def grandchild_coins(number_of_grand_children):
              # initalizes coins to 1
    Coins=1
    total_coins=[]

# for grand_child in the range entered this code is ran
for grand_child in range(number_of_grand_children):

    # if the grand_child number is not 0 coins = coins*2
    if grand_child !=0:
        Coins=Coins*2
        # prints coins for each grand_child
    print ' Grand_Child' + str(grand_child)  + str( Coins)
    total_coins.append(Coins)

        # returns total amount of coins



return sum(total_coins) + ' Coins in total'

Tags: ofinchildnumberforrange硬币total
2条回答

每次迭代都需要一个print语句(而不是只在末尾使用return):

def grandchild_coins(number_of_grand_children):# Not finished
    Coins=1
    for grand_child in range(number_of_grand_children):
        Coins=Coins*2
        print 'Grand child' + str(grand_child) + ' ' + str(Coins) + ' Coins'

注意:这回答了你的问题,而不是你家庭作业中的问题。。。你知道吗

顺便说一下,你不需要循环来解决这个问题,有一个简单的公式。。。你知道吗

这是因为您只返回范围中的最后一个元素(grand_child将等于9-范围(10)表示从0到9的迭代) 所以,我建议(尽量接近你的代码):

def grandchild_coins(number_of_grand_children):
    Coins=1
    for grand_child in range(number_of_grand_children):
        if grand_child != 0: #where you need to keep 1 coinn for the first son
            Coins=Coins*2
        print(' Grand child' + str(grand_child + 1) + ' ' + str(Coins) + 'Coins')  
    return True

grandchild_coins(10)

以及输出:

 Grand child1 1Coins
 Grand child2 2Coins
 Grand child3 4Coins
 Grand child4 8Coins
 Grand child5 16Coins
 Grand child6 32Coins
 Grand child7 64Coins
 Grand child8 128Coins
 Grand child9 256Coins
 Grand child10 512Coins

相关问题 更多 >