3d форум по Blender

Blender => Другое => Тема начата: nort от 29 Июль 2010, 12:28:56

Название: Программирование
Отправлено: nort от 29 Июль 2010, 12:28:56
Начал изучать язык python
вот интересная книга
Чаплыгин А. Н.: Учимся программировать вместе с Питоном(ревизия 226)
http://depositfiles.com/ru/files/4489857 (http://depositfiles.com/ru/files/4489857)
Название: Re: Программирование
Отправлено: nort от 29 Июль 2010, 17:16:07
ну вот и первая ошибка,кто нибудь в курсе в чем дело.Пишу в idle2.6 корень квадратного уравнения
def printRoots(a, b, c):                                 
       D = b**2 - 4 * a * c                               
       import math                               
       x1 = (-b + math.sqrt(D)) / 2 * a                               
       x2 = (-b - math.sqrt(D)) / 2 * a                               
       print "x1 =", x1, "\nx2 =", x2
SyntaxError: invalid syntax
Название: Re: Программирование
Отправлено: sungreen от 29 Июль 2010, 19:51:13
def printRoots(a, b, c):                                 
       D = b**2 - 4 * a * c                               
       import math                               
       print D
       x1 = (-b + math.sqrt(D)) / 2 * a                               
       x2 = (-b - math.sqrt(D)) / 2 * a                               
       print "x1 =", x1, "\nx2 =", x2

printRoots(1,4,1)

12
x1 = -0.267949192431
x2 = -3.73205080757

---------------------
(program exited with code: 0)
Press return to continue
Название: Re: Программирование
Отправлено: nort от 29 Июль 2010, 19:54:52
оба на ,работает не понял почему был косяк
Название: Re: Программирование
Отправлено: nort от 29 Июль 2010, 20:17:27
кажись разобрался. я каждую последующую строку писал отступая Tab`ом . А нужно было жать на интер и курсор опускался в низ.
Название: Re: Программирование
Отправлено: bdancer от 30 Июль 2010, 02:05:04
@rtn, забей на idle, пиши код в текстовом редакторе с поддержкой форматирования питона и исполняй потом: python <имя-файла>.
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 07:47:00
пиши код в текстовом редакторе с поддержкой форматирования питона
как называется такой редактор? А исполнять потом в консоли?
Название: Re: Программирование
Отправлено: sungreen от 30 Июль 2010, 08:40:16
... весьма простая штука geany ...

[вложение удалено Администратором]
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 08:56:56
ты че не спал)
написал в фаил,открыл в консоли с помощью питона,вот такая теперь ошибка:
choice = raw_input("введите (1or2):")
if choice =="1":
   function1()
elif choce =="2":
   function2()
else:
    print "не верно"
print "спасибо"

>>>python3 prog7.py
  File "prog7.py", line 7
    print "не верно"
                          ^
SyntaxError: invalid syntax

Название: Re: Программирование
Отправлено: sungreen от 30 Июль 2010, 09:11:18
... попробуй вставить в самом начале строку
Код
# -*- coding: utf-8 -*-

# http://www.python.org/dev/peps/pep-0263/ (http://www.python.org/dev/peps/pep-0263/)
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 09:13:19
python3 prog7.py
  File "prog7.py", line 1
    -*- coding: utf-8 -*-
    ^
IndentationError: unexpected indent
Название: Re: Программирование
Отправлено: sungreen от 30 Июль 2010, 09:14:12
... решетку  спереди забыл? ...
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 09:14:22
как в  geany запустить прогу?
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 09:15:13
python3 prog7.py
  File "prog7.py", line 8
    print "не верно"
                          ^
SyntaxError: invalid syntax
Название: Re: Программирование
Отправлено: sungreen от 30 Июль 2010, 09:15:48
... ты скрин смотрел? а? я уже знал какой вопрос ты задашь - F8, F5
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 09:16:07
питон должен спрашивать :1 или 2,ничего такого нет
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 09:17:32
чем отличается F8 от F5 ?
Название: Re: Программирование
Отправлено: sungreen от 30 Июль 2010, 09:24:08
# -*- coding: utf-8 -*-

def printRoots(a, b, c):                                 
       D = b**2 - 4 * a * c                               
       import math                               
       print D
       
       x1 = (-b + math.sqrt(D)) / 2 * a                               
       x2 = (-b - math.sqrt(D)) / 2 * a                               
       print "x1 =", x1, "\nx2 =", x2
       choice = raw_input("введите (1or2):")
       print "вери гуд", choice

printRoots(1,4,1)

12
x1 = -0.267949192431
x2 = -3.73205080757
введите (1or2):1
вери гуд 1

---------------------
(program exited with code: 0)
Press return to continue

Название: Re: Программирование
Отправлено: sungreen от 30 Июль 2010, 10:10:11
Код
# -*- coding: utf-8 -*-

def function1():
print "это функция 1, чесслово"
def function2():
print "это функция 2, вроде"

choice = raw_input("введите (1or2):")

if choice =="1":
   function1()
elif choice =="2":
   function2()
else:
   print "не верно"
print "спасибо"
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 10:18:03
спасибо код работает
Название: Re: Программирование
Отправлено: bdancer от 30 Июль 2010, 12:37:07
@rtn, в python3 - print("что-то")
в python2 - print "что-то"
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 13:04:49
тоесть отличается скобками,понятно
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 14:34:18
не получается оператор цикла
Код
correct_choice = False
while not correct_choice:
choice = raw_input("введите пожалуйса 1 или 2:")
if choice == "1" or choice == "2":
correct_choice = True
else:
print "неправилно,попробуйте есчо раз"
print "спасибо"
Название: Re: Программирование
Отправлено: Юрий Пет от 30 Июль 2010, 16:46:00
Цитировать
print "неправилно,попробуйте есчо раз"
print "спасибо"
Зачем два раза выводить?
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 16:53:06
первый раз выводится в цикле,а последний раз это в конце.почитай книгу она интересная
Название: Re: Программирование
Отправлено: Юрий Пет от 30 Июль 2010, 17:17:42
Вот это выводится одновременно, если не выполнено первое условие или в питоне не так?
Код
print "неправилно,попробуйте есчо раз"
print "спасибо"
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 17:26:00
нее,если первое условие не выполнено в цикле то выводится певая строчка(она смещена) если выполнена то вторая строчка
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 19:13:36
не получается оператор цикла
correct_choice = False
while not correct_choice:
   choice = raw_input("введите пожалуйса 1 или 2:")
   if choice == "1" or choice == "2":
      correct_choice = True
   else:
      print "неправилно,попробуйте есчо раз"
print "спасибо"
причем я никак не могу вникнуть в этот код
Название: Re: Программирование
Отправлено: sungreen от 30 Июль 2010, 19:16:02
>> или в питоне не так?
... в питоне не так, это хвосты - суть отступы в начале строки важны, они формируют структуру программы вместо функциональных скобок ...

# смотри скрин ниже
Название: Re: Программирование
Отправлено: sungreen от 30 Июль 2010, 19:20:41
не получается оператор цикла
correct_choice = False
while not correct_choice:
   choice = raw_input("введите пожалуйса 1 или 2:")
   if choice == "1" or choice == "2":
      correct_choice = True
   else:
      print "неправилно,попробуйте есчо раз"
print "спасибо"
причем я никак не могу вникнуть в этот код

... гуд, все работает ...

... суть, ну только если это не преднамеренная наивность, while not correct_choice крутит пока correct_choice равно false. Если ты ввел 1 или 2, то correct_choice сразу станет true, иначе цикл повториться ...

для python3
Код
correct_choice = False
while not correct_choice:
   choice = input("введите пожалуйса 1 или 2:")
   if choice == "1" or choice == "2":
      correct_choice = True
   else:
      print ("неправилно,попробуйте есчо раз")
print ("спасибо")

[вложение удалено Администратором]
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 19:29:31
я понимаю что код должен работать но у меня ни как((
Название: Re: Программирование
Отправлено: nort от 30 Июль 2010, 21:22:38
код заработал
Название: Re: Программирование
Отправлено: nort от 31 Июль 2010, 01:17:12
другой код но работает точно так же и понимается легче
Код: python
correct_choice = True
while correct_choice:
choice = raw_input("введите пожалуйса 1 или 2:")
if choice == "1" or choice == "2":
correct_choice = False
else:
print "неправилно,попробуйте есчо раз"
print "спасибо"
Название: Re: Программирование
Отправлено: sungreen от 31 Июль 2010, 07:38:07
Код: python
while True:
   choice = input("введите пожалуйса 1 или 2:")
   if choice == "1" or choice == "2":
   break
   else:
      print ("неправилно,попробуйте есчо раз")
print ("спасибо")

Код: python
while True:
   choice = int(input("введите пожалуйса 1 или 2:"))
   if choice in [1, 2]:
   break
   else:
      print ("неправилно,попробуйте есчо раз")
print ("спасибо")

Код: python
while not int(input("введите пожалуйса 1 или 2:")) in [1, 2]:
      print ("неправилно,попробуйте есчо раз")
print ("спасибо")
Название: Re: Программирование
Отправлено: nort от 31 Июль 2010, 13:34:41
ни один из последних кодов у меня не работает,но я верю что они должны работать.особенно понравился последний код,короткий.И я не понимаю его смысл
Название: Re: Программирование
Отправлено: nort от 31 Июль 2010, 13:49:32
есть какая нибудь др прога?
Название: Re: Программирование
Отправлено: nort от 31 Июль 2010, 14:29:43
хм заработало
вот что на сайте питона пишут

Defining the Encoding

    Python will default to ASCII as standard encoding if no other
    encoding hints are given.

    To define a source code encoding, a magic comment must
    be placed into the source files either as first or second
    line in the file, such as:

          # coding=<encoding name>

    or (using formats recognized by popular editors)

          #!/usr/bin/python
          # -*- coding: <encoding name> -*-

    or

          #!/usr/bin/python
          # vim: set fileencoding=<encoding name> :

    More precisely, the first or second line must match the regular
    expression "coding[:=]\s*([-\w.]+)". The first group of this
    expression is then interpreted as encoding name. If the encoding
    is unknown to Python, an error is raised during compilation. There
    must not be any Python statement on the line that contains the
    encoding declaration.

    To aid with platforms such as Windows, which add Unicode BOM marks
    to the beginning of Unicode files, the UTF-8 signature
    '\xef\xbb\xbf' will be interpreted as 'utf-8' encoding as well
    (even if no magic encoding comment is given).

    If a source file uses both the UTF-8 BOM mark signature and a
    magic encoding comment, the only allowed encoding for the comment
    is 'utf-8'.  Any other encoding will cause an error.

Название: Re: Программирование
Отправлено: nort от 31 Июль 2010, 23:51:28
после этой строчки все работает нормально:
Код: python
# -*- coding: utf-8 -*-
Но я вот что вычитал из учебника:
" В питоне коментарии помечаются символом #  - строки ,начинающиеся с этого символа,просто игнорируются интерпретатором и никак не влияют на ее трансляцию и выполнение"

вопрос: так почему если строчка игнорируется после этого знака она все таки действует.тоесть у меня код начинает работать без ошибок с этой строчкой.
Название: Re: Программирование
Отправлено: sungreen от 02 Август 2010, 00:47:51
>> вопрос: так почему если строчка игнорируется
... afake, это такой костыль - фича реализации в никсах работы с кодировкой исходников ...
... в доках после определения комментария идет определение объявления кодировки ...

Цитировать
2.1.3. Comments¶

A comment starts with a hash character (#) that is not part of a string literal, and ends at the end of the physical line. A comment signifies the end of the logical line unless the implicit line joining rules are invoked. Comments are ignored by the syntax; they are not tokens.
2.1.4. Encoding declarations¶

If a comment in the first or second line of the Python script matches the regular expression coding[=:]\s*([-\w.]+), this comment is processed as an encoding declaration; the first group of this expression names the encoding of the source code file. The recommended forms of this expression are

# -*- coding: <encoding-name> -*-

which is recognized also by GNU Emacs, and

# vim:fileencoding=<encoding-name>

which is recognized by Bram Moolenaar’s VIM.

If no encoding declaration is found, the default encoding is UTF-8. In addition, if the first bytes of the file are the UTF-8 byte-order mark (b'\xef\xbb\xbf'), the declared file encoding is UTF-8 (this is supported, among others, by Microsoft’s notepad).

If an encoding is declared, the encoding name must be recognized by Python. The encoding is used for all lexical analysis, including string literals, comments and identifiers. The encoding declaration must appear on a line of its own.

http://docs.python.org/py3k/reference/lexical_analysis.html#line-structure (http://docs.python.org/py3k/reference/lexical_analysis.html#line-structure)

# у мну в python3.1.2 эта строка не потребовалась ...
Название: Re: Программирование
Отправлено: sungreen от 02 Август 2010, 01:27:54
Код: python
from Blender import Draw
b= Draw.Create(0.0) # Data for floating point button
def bevent(evt):
  print 'My Button event:', evt
def gui():
  global b
  b= Draw.Number('value: ', 1000, 0,0, 200, 20, b.val, 0,10, 'some text tip')
Draw.Register(gui, None, bevent) # we are not going to worry about keyboard and mouse events

[вложение удалено Администратором]
Название: Re: Программирование
Отправлено: nort от 02 Август 2010, 01:37:16
что за код?
Название: Re: Программирование
Отправлено: nort от 02 Август 2010, 02:22:57
опиши по строчно что делается в скрипте..
Название: Re: Программирование
Отправлено: bdancer от 02 Август 2010, 16:01:40
rtn, Запусти в 2.4 и узнаешь =)
Название: Re: Программирование
Отправлено: nort от 02 Август 2010, 16:56:25
rtn, Запусти в 2.4 и узнаешь =)
ну там появляется кнопка-крутилка.Я имелл ввиду понимание как рассуждает программа при разборе этого кода
Название: Re: Программирование
Отправлено: sungreen от 02 Август 2010, 18:43:32
>> как рассуждает программа
... мну становиться жутко дико когда представлю себе такое, если они еще и рассуждать начнут то это наверное и будет финал человечества ...
Название: Re: Программирование
Отправлено: nort от 02 Август 2010, 18:49:48
) ну как выполняется программа в скрипте,расскажи
Название: Re: Программирование
Отправлено: bdancer от 02 Август 2010, 19:24:57
Программа думает: "Меня запустил rtn... sys.exit()" =)
Название: Re: Программирование
Отправлено: nort от 02 Август 2010, 19:33:19
 :)
Название: Re: Программирование
Отправлено: sungreen от 03 Август 2010, 08:18:52
... в качестве пропоганды секса и насилия над головным мозгом, вот код на прологе ...
Код: Prolog
good:-write('Cпасибо!').
answer(1):-good.
answer(2):-good.
answer(X):-write('Попробуйте еще раз'), query.
query:-write('Введите 1 или 2:'),read(X), answer(X).

... Тебе сказали спасибо - это хорошо, хорошо это когда на твой вопрос ответ 1 или 2, при другом ответе спросить еще раз, ...
Название: Re: Программирование
Отправлено: nort от 03 Август 2010, 13:19:35
выкладывай только питон,я этот язык не понимать
Название: Re: Программирование
Отправлено: nort от 03 Август 2010, 13:56:08
Код: python
from Blender import Draw
b= Draw.Create(0.0) # Data for floating point button
def bevent(evt):
  print 'My Button event:', evt
def gui():
  global b
  b= Draw.Number('value: ', 1000, 0,0, 200, 20, b.val, 0,10, 'some text tip')
Draw.Register(gui, None, bevent) # we are not going to worry about keyboard and mouse events
я так понимаю,что кострукция работает следующим образом:
from Blender import Draw     #что то импортируется из блендера
далее...?
Название: Re: Программирование
Отправлено: nort от 04 Август 2010, 10:10:47
интересные статьи
http://blender3d.org.ua/tutorial/371.html (http://blender3d.org.ua/tutorial/371.html)
http://blender3d.org.ua/tutorial/372.html#1 (http://blender3d.org.ua/tutorial/372.html#1)
Название: Re: Программирование
Отправлено: nort от 04 Август 2010, 17:51:27
интересная книга
Лутц - Изучаем Python.3ed.2009
http://www.onlinedisk.ru/file/199305/ (http://www.onlinedisk.ru/file/199305/)
Название: Re: Программирование
Отправлено: nort от 04 Август 2010, 20:12:45
хорошая книга.. :)
Название: Re: Программирование
Отправлено: sungreen от 04 Август 2010, 20:33:24
>> хорошая книга.. :)
... с картинками и дописанная до конца? ...
Название: Re: Программирование
Отправлено: nort от 04 Август 2010, 20:40:46
ну я еще только на 73 странице,а их 800.вроде все разжовано.почитай на досуге
Название: Re: Программирование
Отправлено: nort от 06 Август 2010, 17:52:11
sungreen
нашел интересный пример в книге(ловушка) :)
какой должен получится результат,и почему?считай только в уме!!!
L = [4, 5, 6]
x = L * 4
L[1] = 0
>>> x
...............????????
Название: Re: Программирование
Отправлено: sungreen от 06 Август 2010, 19:42:03
... упс, ловушка (http://lurkmore.ru/Catch-22) говоришь, будем знать ...
Название: Re: Программирование
Отправлено: sungreen от 26 Сентябрь 2010, 07:48:52
Начинающему использовать Python
http://www.lexpr.ru/phpBB3/viewtopic.php?f=25&t=1902 (http://www.lexpr.ru/phpBB3/viewtopic.php?f=25&t=1902)