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

Почему я продолжаю получать ошибки имени? Эйлер 2 Питона

Всякий раз, когда я определяю каждую из переменных в функции, я получаю сообщение об ошибке, например «NameError: имя« Tempsum »не определено». Когда я делаю их глобальными переменными, я получаю сообщение об ошибке, такое как «UnboundLocalError: ссылка на локальную переменную« Tempsum »перед назначением»

Tempsum=0
FirstNum = 1
SecondNum = 2
SumofFibinaci= 0 
def Fibinaci_calculator():
    while Tempsum <= 4000000:
        Tempsum= SecondNum 
        m= 2
        if Tempsum % m == 0: 
            SumofFibinaci += Tempsum 
        Tempsum = SecondNum+ FirstNum
        FirstNum= SecondNum 
        SecondNum= Tempsum
print SumofFibinaci
pass
print Fibinaci_calculator
17.02.2015

  • Пожалуйста, опубликуйте полный текст ошибки, которую вы получаете с этим кодом. 18.02.2015
  • Кроме того, зачем делать временные переменные состояния для метода глобальными? Это просто плохая идея. 18.02.2015

Ответы:


1

Вы получаете ошибку UnboundLocal Tempsum не является глобальной в области действия функции. Вы присваиваете ему значение, поэтому оно является локальным, если явно не указано иное.

Вам не нужно Tempsum быть здесь глобальным. Переместите строку Tempsum = 0 в функцию. Это относится ко всем вашим переменным:

def Fibinaci_calculator():
    Tempsum = 0
    FirstNum = 1
    SecondNum = 2
    SumofFibinaci = 0 

    while Tempsum <= 4000000:
        Tempsum = SecondNum 
        m = 2
        if Tempsum % m == 0: 
            SumofFibinaci += Tempsum 
        Tempsum = SecondNum + FirstNum
        FirstNum = SecondNum 
        SecondNum = Tempsum

    return SumofFibinaci

Я полагаю, вы хотите вернуть SumofFibinaci.

Не забудьте вызвать свою функцию:

print Fibinaci_calculator()
17.02.2015
  • Возможно, вы также захотите обратиться к print Fibinaci_calculator, что почти наверняка не является тем, чего хочет ОП. 18.02.2015
  • Большое спасибо за вашу помощь, которая исправила функцию! (я все еще новичок в python) 18.02.2015
  • Новые материалы

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

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

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

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

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

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

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