Форум сайта python.su
0
Решил изучить python.Переменые освоил операторы if и while освоил,вот решил добратся до функций и модулей…для обучения выбрал написание игры в кости,для этого написал модуль который генерирует комбинацию из трех костей,назвал его modul1,поместил в /usr/lib/python2.7,потом написал скрипт вот с таким содержанием :
from modul1 import z print'combination '+str(q)+' ockov '+str(rez)
import random rez=0 x=int(random.random()*7) y=int(random.random()*7) z=int(random.random()*7) #x=int(input('x:')) #y=int(input('y:')) #z=int(input('z:')) q= (x*100)+(y*10)+z if q==111: rez=x*100 elif q==222: rez=x*100 elif q==333: rez=x*100 elif q==444: rez=x*100 elif q==555: rez=x*100 elif q==666: rez=x*100 elif q==123 or q==231 or q==321 or q==213 or q==312 or q==132: rez=30 elif q==234 or q==342 or q==423 or q==324 or q==342 or q==432: rez=40 elif q==345 or q==354 or q==453 or q==435 or q==543 or q==534: rez=50 elif q==456 or q==465 or q==564 or q==546 or q==654 or q==645: rez=60 elif x==1 and y!=1 and y!=5 and z!=1 and z!=5 or x!=1 and x!=5 and y==1 and z!=1 and z!=5 or\ x!=1 and x!=5 and y!=1 and y!=5 and z==1 or x==5 and y==5 and z!=1 and z!=5: rez=10 elif x==5 and y!=5 and y!=1 and z==5 or x!=1 and x!=5 and y==5 and z==5 or x==5 and y==5 and z!=1 and z!=5: rez=10 elif x==1 and y==5 and z!=1 and z!=5 or x==5 and y==1 and z!=1 and z!=5 or x==5 and y!=1 and y!=5 and z==1\ or x!=1 and x!=5 and y==1 and z==5 or x!=1 and x!=5 and y==5 and z==1 or x==1 and y!=1 and y!=5 and z==5: rez=15 elif x==1 and y!=1 and y!=5 and z==1 or x!=1 and x!=5 and y==1 and z==1 or x==1 and y==1 and z!=1 and z!=5 or\ x==1 and y==5 and z==5 or x==5 and y==5 and z==1: rez=20 elif x==1 and y==1 and z==5 or x==1 and y==5 and z==1 or x==5 and y==1 and z==1: rez=25 elif x==5 and y!=1 and y!=5 and z!=1 and z!=5 or x!=5 and y==5 and y!=1 and z!=1 and z!=5 or x!=5 and y!=1 and y!=5 and z!=1 and z==5: rez=5 else: print'' print''
Отредактировано totiks (Сен. 3, 2014 21:14:27)
Офлайн
33
totiks
Код в теги
totiks
при выполнении консоль ругается таким вот содержанием
line 2, in <module>
print’combination ‘+str(q)+’ ockov ‘+str(rez)
NameError: name ’q' is not defined
Отредактировано Budulianin (Сен. 3, 2014 20:27:10)
Офлайн
2
а перевести текст ошибки религия не позволяет? прошу в гугл.транслейт.
в вашем случае надо использовать такой импорт:
from modul1 import *
from modul1 import z,x,y
Отредактировано bs0d (Сен. 3, 2014 20:28:09)
Офлайн
0
Спасибо вам всем,я и переводил , и по сайтам про python искал ,и в книгах,ничего не удалось найти,днем на джаббер конференции вашего форума подсказали, и сегодня вот здесь, спасибо вам еще раз!
как все стало прозрачно и понятно
from modul1 import q,rez

Отредактировано totiks (Сен. 3, 2014 20:53:40)
Офлайн
0
Доброго вечера всем,и вот снова у меня возник вопрос по модулям,мной созданы два модуля в одном такой код:
a='XXXXXXXXXXXXXXXXXXX'
b='YYYYYYYYYYYYYYYYYYY'
from mod1 import a from mod2 import b print a print b raw_input() a=0 b=0 print a print b raw_input() from mod1 import a from mod2 import b print a print b raw_input()
Отредактировано totiks (Сен. 9, 2014 19:56:52)
Офлайн
33
totiksФактически, он не будет импортироваться второй раз. Интепретатор куда-то посмотрит(а вот куда интерересно?) и увидет импортированный ранее модуль.
некоректно каждый раз импортировать этот модуль,
>>> import modmod >>> modmod.a 3
>>> import modmod >>> modmod.a 3
>>> reload <built-in function reload> >>> reload(modmod) <module 'modmod' from 'modmod.py'> >>> modmod.a 5
Отредактировано Budulianin (Сен. 9, 2014 20:28:56)
Офлайн
0
Budulianin
Спасибо,но почему-то интерпретатор, не хочет это исполнять из скрипта,пишет line 11, in <module>
reload(m1)
NameError: name ‘m1’ is not defined, то есть как и в прошлом случае он не получил имя модуля ,хотя я в скрипте написал его так
reload(m1) reload(m2)
Отредактировано totiks (Сен. 9, 2014 20:48:54)
Офлайн
33
totiksЧтобы что-то перезагрузить, нужно это сначала загрузить.
NameError: name ‘m1’ is not defined
Офлайн
0
он так отреагировал вот на этот код :
from m1 import a from m2 import b print a print b raw_input() a=0 b=0 print a print b raw_input() reload(m1) reload(m2) print a print b raw_input()
Отредактировано totiks (Сен. 9, 2014 21:10:12)
Офлайн
33
totiks
вроде импорт был в начале программы,…
>>> locals() {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None} >>> from modmod import a >>> locals() {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'a': 999999999999999, '__package__': None} >>> modmod Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'modmod' is not defined
Офлайн