Функция геометрической прогрессии в python

Написание кода Python для расчета геометрической прогрессии

Я новичок в программировании и python. Мне нужна помощь в кодировании геометрической прогрессии, которая должна рассчитать прогрессию 1,2,4,8,16. Вот, что у меня есть до сих пор:

def work_calc (days_worked, n): temp=int(1) if days_worked 

Прямо сейчас это дает мне этот результат: 1, 4, 9, 16, 25 мне нужно: 1,2,4,8,16,32. im писать код, который в основном должен делать это:

Example: Enter a number: 5 your value 1 is: 1 your value 2 is : 2 your value 3 is : 4 your value 4 is : 8 your value 5 is : 16 your total is: 31 

Заранее благодарим за помощь и руководство! PS: Мне нравится глупая блондинка иногда (в основном), когда дело доходит до программирования, поэтому спасибо за терпение.

3 ответа

Я понимаю, что это, вероятно, слишком велико для того, что вы хотите сделать, и вам были даны отличные рекомендации в других ответах на то, как решить вашу проблему, но ввести некоторые другие функции 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 это не проблема, а для больших может быть дорогостоящим. Выражения генератора очень похожи на списки, но откладывают вычисления до повторения.

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)) 

Как я уже сказал, overkill, но, надеюсь, вводит некоторые другие функции python.

Спасибо вам, ребята, вы очень помогли мне продолжить работу / изучение этого материала: Незначительная проблема с форматированием: У меня проблемы с такими значениями: 97 $ 7,922816251426434e + 26 98 $ 1,5845632502852868e + 27 99 $ 3.1691265005705736e + 27 100 $ 6.338253001141147e + 27 Я хочу, чтобы он печатался нормально (?) Всего с двумя десятичными пробелами . я уверен, что это простая вещь для форматирования, но, похоже, это ускользает от меня .. Думаю, это то, что чувствуют дети, когда учатся ходить!

Это действительно отдельный вопрос. Существует два подхода к форматированию: старый '%.2f' % 1.23456 и новый '<:.2f>'.format(1.23456) . Имейте в виду, что только то, что они отображаются в научной нотации, не означает, что они являются числами с плавающей точкой ''.format() должно привести к его целочисленному форматированию.

Как я уже сказал, похоже, вам нужны силы 2 :

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

если вы хотите напечатать строки (не кортежи, как вы сейчас делаете):

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 

Просто отметим - ваш код вычисляет квадраты temp , а не силы 2, что почему не работает

Примечание: print - это функция в python-3.x, поэтому она может не печатать кортежи, так как вопрос помечен как python-2.7 и python-3.x. Вторым примером будет синтаксическая ошибка в python-3.x. Хотя первый будет работать в обоих, как есть, я бы использовал from __future__ import print_function . Также диапазон изменяет поведение в 3, и будет использовать xrange в 2.7.

Это вопрос домашнего задания? (недостаточная репутация для комментариев)

В последовательности 1, 2, 4, 8, 16, 1,2,4,8,16,32 каждый член равен удвоенному предыдущему члену.

Таким образом, вы можете сохранить запись предыдущего термина и удвоить его, чтобы получить следующий.

Как отмечали другие, это то же самое, что и вычисление 2 ^ п (а не, как я уже говорил, п ^ 2), где п - число членов.

print ('your pay for 1 is' 1) prevpay = 1 while temp  

Источник

Geometric Progression in Python

FeaImg Geometric Progression

Hey Folks! In this tutorial, we will understand what a Geometric Progression is and how to implement the same in the Python programming language.

Introduction to Geometric Progression (G.P.)

Geometric Series is a succession of elements in which the next item is acquired by multiplying the previous item by the common ratio.

A G.P. Series is a number series in which the common ratio of any successive integers (items) is always the same.

This Sum of the G.P Series is based on a mathematical formula.

Sn = a(r n ) / (1- r)
Tn = ar (n-1)

Geometric Progress in Python

Let’s get into the understanding of how geometric progression works in Python. We’ll take a look at two different examples of the same to get a better understanding.

1. Print first n terms of the Geometric Progression

There are a number of steps involved to achieve the n GP terms. The steps are as follows:

Step 1 – Take the input of a ( the first term ), r( the common ratio), and n ( the number of terms )
Step 2 – Take a loop from 1 to n+1 and compute the nth term in every iteration and keep printing the terms.

# 1. Take input of 'a','r' and 'n' a = int(input("Enter the value of a: ")) r = int(input("Enter the value of r: ")) n = int(input("Enter the value of n: ")) # 2. Loop for n terms for i in range(1,n+1): t_n = a * r**(i-1) print(t_n)
Enter the value of a: 1 Enter the value of r: 2 Enter the value of n: 10 1 2 4 8 16 32 64 128 256 512

2. Get Sum of first n terms in Geometric Progression

There are a number of steps involved to achieve the sum of first n GP terms. The steps are as follows:

Step 1 – Take the input of a (the first term), r(the common ratio), and n (the number of terms)
Step 2 – Use the formula mentioned above to compute the sum of the first ‘n’ terms.

# 1. Take input of 'a','r' and 'n' a = int(input("Enter the value of a: ")) r = int(input("Enter the value of r: ")) n = int(input("Enter the value of n: ")) if(r>1): S_n = (a*(r**n))/(r-1) else: S_n = (a*(r**n))/(1-r) print("Sum of n terms: ",S_n)
Enter the value of a: 1 Enter the value of r: 2 Enter the value of n: 5 Sum of n terms: 32.0

Conclusion

Congratulations! You just learned how to implement Geometric Progression in Python. Hope you enjoyed it! 😇

Liked the tutorial? In any case, I would recommend you to have a look at the tutorials mentioned below:

Thank you for taking your time out! Hope you learned something new!! 😄

Источник

Как найти геометрическую прогрессию в списке?

уточните: прогрессия должна быть непременно подряд, не короче (скольких?) элементов, если найдено несколько – какая лучше?
В примере можно найти наиболее длинную 1,2,4,8,16, а можно сказать, что нашли 1,4,16 и она круче (буквально) растёт

В цикле бежать с конца списка к началу, каждую итерацию делить предыдущее число на текущее, если хотя бы две итерации результат деления совпадают - мы нашли конец прогрессии, так как шли с конца, теперь идём дальше по списку, пока результат деления не будет отличаться. эта итерация и будет началом прогрессии.
Естественно есть получше решения, в том числе рекурсивные, более простые и лаконичные, но для понимания принципа - сойдёт

Rsa97

Берём первые два числа списка. Они образуют геометрическую прогрессию с x0 = a[0] и k = a[1]/a[0].
Прогрессия найдена.

Vindicar

Составь новый список, в котором каждый элемент - это частное* двух соседних элементов исходного списка.
Если в новом списке будет несколько одинаковых** элементов подряд, то в исходном списке соответствующие элементы формируют геометрическую прогрессию.

*Не забываем про деление на ноль! Может потребоваться отдельная проверка.

**Не забывай про ограниченную точность чисел с плавающей точкой. Сравнивать такие числа лучше не как обычно, a == b , а с помощью конструкции вида abs(a - b)

Источник

Написать функцию, которая вычисляет n-ый член геометрической прогрессии и сумму n первых членов

Написать функцию, которая вычисляет n-ый член геометрической прогрессии и сумму n первых членов прогрессии для заданных b1, q и n.

Вычислить n-ый член геометрической прогрессии и сумму n первых членов.
Написать функцию, которая вычисляет n-ый член геометрической прогрессии и сумму n первых членов.

Составить функцию, которая находит n-й член и сумму первых n членов прогрессии
Пользователь вводит два вещественных числа: a и d, а также целое число n. Для вычисления.

Рекурсия. Для данной геометрической прогрессии вычислить n-ый член, сумму первых n членов
Напишите программу, в которой для данной геометрической прогрессии используются две функции 1)для.

Пусть заданы первый член и знаменатель геометрической прогрессии. Вычислить сумму первых n ее членов.,
Пусть заданы первый член и знаменатель геометрической прогрессии. Вычислить сумму первых n ее.

Лучший ответ

Сообщение было отмечено Флавиан как решение

Решение

b1, q, n = 3, 2, 5 # map(int, input().split()) b = [b1] for _ in range(1, n): b.append(b[-1] * q) print(b[-1], sum(b))
b1, q, n = 3, 2, 5 # map(int, input().split()) b = [b1 * q ** (i - 1) for i in range(1, n + 1)] print(b[-1], sum(b))
b1, q, n = 3, 2, 5 # map(int, input().split()) print(b1 * q ** (n - 1), b1 * (1 - q ** n) / (1 - q))

Используя рекурсивную функцию, вычислить сумму первых n членов геометрической прогрессии
Используя рекурсивную функцию, вычислить сумму первых n членов геометрической прогрессии. Даны.

Написать рекурсивную программу, вычисляющую сумму первых n членов геометрической прогрессии
Написать рекурсивную программу вычисляющую сумму первых n членов геометрической прогрессии.

Реализовать алгоритм, вычисляющий N первых членов и сумму N первых членов геометрической прогрессии.
реализовать алгоритм,вычисляющий N первых членов и сумму N первых членов геометрической прогрессии.

Источник

Читайте также:  Python static variable in static method
Оцените статью