LINUX.ORG.RU

Новичок в Python

 ,


0

2

Добрый день форумчане!Недавно освоил python, и, соответственно возникала проблема при изучении.

Структура файлов:

abc/
  Expressions.py
  Main.py

В Expressions.py код:

from random import randrange as randnum

class Expressions:
  def __init__(self,complexity):
    self.complexity = complexity
    
  def Addiction(self):
    global num1
    global num2
    global solution  
    if self.complexity == 1:
        num1=randnum(0,10)
        num2=randnum(0,10)
    elif self.complexity == 2:
        num1=randnum(10,100)
        num2=randnum(10,100)
    solution=num1+num2

В файле Main.py:

from Expressions import *

Expressions(1).Addiction()
print(num1)

и выдает ошибка:

Traceback (most recent call last):
  File "/home/shatunix/Projects/Math's simulator/0.2/Main.py", line 18, in <module>
    print(num1)
NameError: name 'num1' is not defined

Хотя если в Main.py убрать

Expressions(1).Addiction()
и добавить это в конце Expression.py, то все работает!

Плиз объясните почему это так, и как это устранить.

Заранее спасибо

Addiction

А нет ли тут пропаганды наркотиков?

theNamelessOne ★★★★★ ()

Недавно освоил python

Не освоил.

Плиз объясните почему это так

Долго объяснять, да ты и не поймешь.

и как это устранить.

Добавь

num1, num2 = 0, 0

в начало Expressions.py

P.S. долго думал, причём тут addiction, потом понял, что это addition.

tailgunner ★★★★★ ()

тебе нужно использовать `return num1` в `Addiction()`, т.к. global работает только для того контекста, где он сам работает, AFAIK.

или можно использовать `self.num1` и получать его из другой программы через `Expressions(1).num1`

powerguy ★★ ()

Только начинаешь, а уже глобальные переменные? Не делай так.

Lilly ()

Плиз объясните почему это так, и как это устранить.

Но зачем? Ты же

Недавно освоил python

и, судя по этому:

Недавно освоил python, и, соответственно возникала проблема при изучении.

освоил еще и логику.

Virtuos86 ★★★★★ ()

внимаааательно прочти, что такое global и что оно делает.

odii ()

Ну ты и черезжопник.

def Addition(self):
    if self.complexity == 1:
        return randnum(0,10)+randnum(0,10)
    else:
        return randnum(10,100)+randnum(10,100)
yvv ★★☆ ()
Последнее исправление: yvv (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.