编写python代码计算几何级数
我是编程和python新手。我需要帮助编码一个几何级数,它应该计算级数1,2,4,8,16。。。以下是我到目前为止的情况:编写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)
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}”。格式应该强制它为整数格式