如何将数字按顺序添加到用户输入,而不是添加一个?

2024-06-17 10:17:33 发布

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

我要上一堂Python的在线计算机科学入门课。一道作业题说象棋的发明者要了一粒米。第一天1粒,第二天2粒,第三天4粒,第五天8粒……一直到68天。我必须创建一个函数来实现这一点,返回输入的方块数的颗粒数。你知道吗

我相信我所要做的就是从用户那里得到正方形的数目。将用户输入的所有2的倍数相加,然后加1。我不知道怎么做。这才是令人恼火的;你知道该做什么,但不知道怎么做。你知道吗

def function(li):
    for i in range(len(li))
    #I need a loop that adds all the multiples of 2 up to the point of the user's input than returns that value. 
    function()

Tags: ofthe函数用户thatfunctionli方块
2条回答

同样可以通过将序列1,2,4,8...看作2^0,2^1,2^2,2^3...来实现。您可以创建一个简单的函数,根据天数给出金额。你知道吗

def fun(days):
    return 2**(days-1)

print fun(64)
9223372036854775808

按照你的逻辑,谷物从1开始,比前一天增加一倍

第一天:1(2**0)

第二天:2(2**1)

第三天:4(2**2)

第四天:8(2**3)

所以第四天会有2**0 + 2**1 + 2**2 + 2**3

使用公式:

x**0 + x**1 + x**2 + x**3 .. x**m =  (x**(m+1) - 1)/(x-1)

我们得到2**(m+1) -1x =2

因此,在第四天(即,从零基指数开始,m=3),总粒数将是2**4 -1 =15

基于上述逻辑,您的功能应该是:

def totalGrains(days):
    return 2**days - 1

相关问题 更多 >