Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写python代码计算几何级数_Python_Python 2.7_Python 3.x - Fatal编程技术网

编写python代码计算几何级数

编写python代码计算几何级数,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我是编程和python新手。我需要帮助编码一个几何级数,它应该计算级数1,2,4,8,16。。。以下是我到目前为止的情况: def work_calc (days_worked, n): temp=int(1) if days_worked<2: print (1) else: while temp <= days_worked: pay1 = (temp**2)

我是编程和python新手。我需要帮助编码一个几何级数,它应该计算级数1,2,4,8,16。。。以下是我到目前为止的情况:

def work_calc (days_worked, n):
      temp=int(1)
      if days_worked<2:
            print (1)
      else:
            while temp <= days_worked:
                  pay1 = (temp**2)
                  pay = int(0)
                  pay += pay1
                  temp +=1
                  print ('your pay for ',temp-1,'is', pay1)

main()
提前感谢您的帮助和指导!
附言:我有时候就像一个愚蠢的金发女郎,尤其是在编程方面,所以谢谢你的耐心。

正如我所说,看起来你需要2的力量:

如果要像现在这样打印字符串而不是元组:

def work_calc (days_worked):
    for temp in range(days_worked):
        print 'your pay for {} is {}'.format(temp + 1, 2 ** temp)

>>> work_calc(5)
your pay for 1 is 1
your pay for 2 is 2
your pay for 3 is 4
your pay for 4 is 8
your pay for 5 is 16

请注意-您的代码是计算温度的平方,而不是2的幂,这就是为什么不工作的原因,正如我所说的,看起来您需要2的幂:

如果要像现在这样打印字符串而不是元组:

def work_calc (days_worked):
    for temp in range(days_worked):
        print 'your pay for {} is {}'.format(temp + 1, 2 ** temp)

>>> work_calc(5)
your pay for 1 is 1
your pay for 2 is 2
your pay for 3 is 4
your pay for 4 is 8
your pay for 5 is 16

请注意-您的代码是计算温度的平方,而不是2的幂,这就是为什么不工作的原因这是一个家庭作业问题吗?没有足够的代表发表评论

在序列1、2、4、8、16、32中,每项是前一项的两倍

因此,你可以保留上一学期的记录,并将其加倍以获得下一学期

正如其他人所提到的,这与计算2^n相同,而不是如我之前所述,计算n^2,其中n是项数

print ('your pay for 1 is' 1)
prevpay = 1
while temp <= days_worked:
    pay1 = prevpay*2
    pay = int(0)
    pay += pay1
    temp +=1
    prevpay = pay1
    print ('your pay for ',temp-1,'is', pay1)

这是家庭作业问题吗?没有足够的代表发表评论

在序列1、2、4、8、16、32中,每项是前一项的两倍

因此,你可以保留上一学期的记录,并将其加倍以获得下一学期

正如其他人所提到的,这与计算2^n相同,而不是如我之前所述,计算n^2,其中n是项数

print ('your pay for 1 is' 1)
prevpay = 1
while temp <= days_worked:
    pay1 = prevpay*2
    pay = int(0)
    pay += pay1
    temp +=1
    prevpay = pay1
    print ('your pay for ',temp-1,'is', pay1)

我知道这可能是对您正在寻找的工作的过度关注,在其他答案中,您得到了关于如何解决您的问题的很好的建议,但要介绍python的其他一些功能,这里有一些其他方法: 列表理解:

def work_calc(days):
    powers_of_two = [2**x for x in range(days)]
    for i, n in enumerate(powers_of_two):
        print('your pay for {} is {}'.format(i+1,n))
    print('your total is {}'.format(sum(powers_of_two)))
这是紧凑和整洁的,但将在内存中保存2^n的整个列表,对于小n这不是问题,但对于大n可能会很昂贵。生成器表达式与列表理解非常相似,但将计算推迟到迭代

def work_calc(days):
    powers_of_two = (2**x for x in range(days))
    total = 0
    for i, n in enumerate(powers_of_two):
        total += n 
        print('your pay for {} is {}'.format(i+1,n))
    print('your total is {}'.format(total))
必须将总数移动到滚动计算,但每次仍计算2**n,发电机功能将避免功率计算:

import itertools

def powers_of_two():
    n = 1
    while True:
        yield n
        n *= 2

def work_calc(days):
    total = 0
    for i, n in enumerate(itertools.islice(powers_of_two(), days)):
        total += n 
        print('your pay for {} is {}'.format(i+1,n))
    print('your total is {}'.format(total))

正如我所说的,这是一种过分的做法,但希望能介绍python的一些其他功能。

我知道这可能是一种过分的做法,您在其他答案中得到了关于如何解决问题的很好的建议,但要介绍python的一些其他功能,还有一些其他方法: 列表理解:

def work_calc(days):
    powers_of_two = [2**x for x in range(days)]
    for i, n in enumerate(powers_of_two):
        print('your pay for {} is {}'.format(i+1,n))
    print('your total is {}'.format(sum(powers_of_two)))
这是紧凑和整洁的,但将在内存中保存2^n的整个列表,对于小n这不是问题,但对于大n可能会很昂贵。生成器表达式与列表理解非常相似,但将计算推迟到迭代

def work_calc(days):
    powers_of_two = (2**x for x in range(days))
    total = 0
    for i, n in enumerate(powers_of_two):
        total += n 
        print('your pay for {} is {}'.format(i+1,n))
    print('your total is {}'.format(total))
必须将总数移动到滚动计算,但每次仍计算2**n,发电机功能将避免功率计算:

import itertools

def powers_of_two():
    n = 1
    while True:
        yield n
        n *= 2

def work_calc(days):
    total = 0
    for i, n in enumerate(itertools.islice(powers_of_two(), days)):
        total += n 
        print('your pay for {} is {}'.format(i+1,n))
    print('your total is {}'.format(total))

正如我所说的,这太过分了,但希望能介绍python的一些其他特性。

您需要二次幂而不是几何级数您需要二次幂而不是几何级数注意:print是python-3.x中的一个函数,因此可能不会打印元组,因为问题被标记为python-2.7和python-3.x。第二个例子是python-3.x中的语法错误。虽然第一个函数可以按原样在两种情况下工作,但我将使用from _ufuture _u导入print_函数。范围也会改变3中的行为,并将在2.7中使用xrange。注意:print是python-3.x中的一个函数,因此可能不会打印元组,因为问题同时标记为python-2.7和python-3.x。第二个例子是python-3.x中的语法错误。虽然第一个函数可以按原样在两种情况下工作,但我将使用from _ufuture _u导入print_函数。范围也会改变3中的行为,在2.7中会使用xrange。每次加倍会得到2,2^n而不是n^2的幂,每次加倍会得到2,2^n而不是n^2的幂,你在让我继续工作/学习这些东西方面帮了大忙:小格式问题:我在处理这些值时遇到困难:97$7.922816251426434e+2698$1.58456325028568e+2799$3.1691265005705736e+27100$6.33825300114147e+27我想把它打印出来通常只有2个小数位。。我相信这是一个简单的格式化的事情,但它似乎是逃避我。。我猜这就是婴儿学习走路时的感觉!这实际上是一个单独的问题。有两种格式化方法:旧的“%.2f”%1.23456和新的“{.2f}”.format1.23456。请注意,仅仅因为它们以科学记数法显示并不意味着它们是浮点数“{:d}”。格式应该强制它为整数格式谢谢大家,你帮了我很大的忙,让我继续工作/学习这些东西:小格式问题:我在处理这些值时遇到了麻烦:97$7.922816251426434e+2698$1.5
845632502852868e+2799$3.1691265005705736e+27100$6.33825300114147E+27我想让它正常打印,只有两个小数位。。我相信这是一个简单的格式化的事情,但它似乎是逃避我。。我猜这就是婴儿学习走路时的感觉!这实际上是一个单独的问题。有两种格式化方法:旧的“%.2f”%1.23456和新的“{.2f}”.format1.23456。请注意,仅仅因为它们以科学记数法显示并不意味着它们是浮点数“{:d}”。格式应该强制它为整数格式