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

Python 如何将数字按顺序添加到用户输入,而不是添加一个?,python,Python,我正在参加Python的在线计算机科学入门课程。一道作业题说,国际象棋的发明者要了一粒米。第一天1粒,第二天2粒,第三天4粒,第五天8粒……一直到68天。我必须创建一个函数来实现这一点,返回输入的方块数的颗粒数 我相信我所要做的就是从用户那里得到方块数。将2的所有倍数相加到用户输入点,然后加1。我不知道怎么做。这才是令人恼火的;你可以知道做什么,但不知道怎么做 def function(li): for i in range(len(li)) #I need a loop tha

我正在参加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()

同样可以通过查看序列
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)
x=2时,我们得到
2**(m+1)-1

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

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

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

它不是平方,而是每次加倍。用“伪代码”(简单的英语)写出你认为它应该如何工作,我们可以帮助它这样工作。这是一个数学问题,不是Python问题,真的。把每一个正方形都加倍只是两次计算的结果。有一个。谢谢回复!你说得对,这是二的力量!我认为它应该是这样工作的:从用户那里获取输入,exponet的返回值减去用户输入的值,例如:如果用户输入=4,那么程序计算2**3afaik,这只是第三个上的颗粒数day@JoranBeasley,实际上,这是第4天的谷物数量。我认为我的回答对如何计算这个问题有一个合理的解释。谢谢!令人惊讶的是,它是多么简单!是的,我记得我在一节数学课上也遇到过同样的问题,答案就是看序列pattern@TannerLancaster如果这是你想要的答案,你能接受吗?是的,我该怎么做?我是新来的。@TannerLancaster