Nano Hash - криптовалюты, майнинг, программирование

Написание функции Python для вычисления Pi

новичок здесь:

Просто изучаю Python, и это меня какает. Он предлагает функцию для ручного вычисления Пи, способ Мадхавы. — также известно как упражнение № 16 отсюда: http://interactivepython.org/courselib/static/thinkcspy/Functions/thinkcspyExercises.html

Может ли кто-нибудь взглянуть на мой беспорядочный и чрезмерно сложный код и сказать мне, не упустил ли я что-то? Большое спасибо. (сначала посмотрите уравнение на вики-странице, иначе мой код не будет иметь смысла — ну, может и не будет.)

 import math

 def denom_exp(iters):
    for i in range(0, iters):
      exp = 3^iters
      return exp

 def base_denom(iters):
    for i in range(0, iters):
      denom = 1 + 2*iters
      return denom

 def myPi(iters):
    sign = 1
    pi = 0
    for i in range(0, iters):
       pi = pi + sign*(1/((base_denom(iters))*denom_exp(iters)))
       sign = -1 * sign
    pi = (math.sqrt(12))*pi
    return pi

 thisisit = myPi(10000)
 print(thisisit)

  • Я думаю, вы хотите использовать i внутри циклов for, а не iters 22.03.2015
  • какая петля конкретно? 22.03.2015
  • Конечно? Я заменил все итерации в циклах for на i и получил TypeErrors неподдерживаемых типов операндов. 22.03.2015
  • я думаю, что заменить iters на i правильно, но PyCharm сходит с ума по поводу строки pi=pi+sign*(1 etcetc), когда я заменяю iters на i.... 22.03.2015
  • Это не единственная проблема. Там, где это уместно, вам нужно будет преобразовать целые числа в число с плавающей запятой. Возможно, подразделение Google Python. 22.03.2015

Ответы:


1

Попробуйте использовать этот код, вычислив число Пи вручную, способом Мадхавы. .

import math

def myPi(iters):
  sign = 1
  x = 1
  y = 0
  series = 0 
  for i in range (iters):
    series = series + (sign/(x * 3**y))
    x = x + 2
    y = y + 1
    sign = sign * -1
  myPi = math.sqrt(12) * series

  return myPi

print(myPi(1000))
22.03.2015
  • я чувствую, что этот код имеет большой смысл и действительно помог упростить мой чрезмерно беспорядочный код, но я все еще завершаю процесс с кодом ошибки 0. Любая подсказка, почему? 23.03.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..