Я запускаю следующий код для значения числа пи, чтобы вычислить первое значение, которое дает 3,14. Я использовал ручные значения для диапазона, который работает, но я хочу, чтобы значения были инкрементными, чтобы дать мне первое значение. В моем коде есть цикл, и я знаю, что это незначительное исправление.
sum = 0
denominator = 1
counter = 1
while '3.14' not in str(sum):
for i in range(counter):
print(counter)
if i % 2 == 0:
sum += 4/denominator
else:
sum -= 4/denominator
denominator += 2
if '3.14' in str(sum):
print(f'The iteration is {i+1} and the values is {sum}')
break
counter += 1
3 ответа
Итак, похоже, что вы пытаетесь найти значение π, используя уравнение Лейбница, π/4 = 1 - 1/3 + 1/5 - 1/7
О, и не называйте переменные sum
. Это важная встроенная функция.
import itertools
total = 0
# denominator will take the values 1, 3, 5, 7, 9, ...
for denominator in itertools.count(1, 2):
if denominator % 4 == 1:
total += 4 / denominator
else:
total -= 4 / denominator
if 3.14 <= total < 3.15:
return denominator
@Фрэнк Йеллин
Спасибо за ответ. Не могли бы вы изменить мой существующий код, чтобы я знал, где именно находится цикл? Мой код работает для ручных значений, например, если бы я ввел диапазон вручную, скажем, 200, он останавливает итерацию на 119. Я хочу использовать логику счетчика пошагово.
На самом деле было две ошибки.
Вы должны вычитать в четных местах и прибавлять в нечетных. Так что пришлось перевернуть.
Не было необходимости во втором цикле for. Первое время достаточно. Его можно решить целочисленным методом, но поскольку вы использовали строковый метод, уточненный код должен быть:
sum = 0 denominator = 1 counter = 1 #this is the main loop while '3.14' not in str(sum): #print(counter) if counter % 2 != 0: sum += 4/denominator print('sum=', sum) else: sum -= 4/denominator denominator += 2 if '3.14' in str(sum): print(f'The iteration is {counter+1} and the values is {sum}') break counter += 1
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.