Поскольку сценарии в цив4 будут скриптоваться на питоне - то данная тема будет полезна для любителей создания сценариев или обычной правки игры "под себя"
Оглавление</a>
Урок 1 - Что такое Питон и как его установить
Урок 2 - Однострочные - очень простые программы
Урок 3 - Более сложные программы и переменные
Урок 4 - Циклы, Циклы, Циклы, Циклы, Циклы
Урок 5 - Многофункциональный!
Урок 6 - Кортежи (матем.), списки и словари[/dohtml]
[dohtml]<a name="l1">Питон полностью поддерживает кириллицу</span> - соответственно сделать русификацию игры или сценариев/модов будет несложно - на кириллице могут быть не только значения переменных, но и их имена
[dohtml]К оглавлению[/dohtml]
Переводчик урока - swan
[dohtml]<a name="l2">Урок 2 - Однострочные - очень простые программы</span></a>[/dohtml]
Итак, мы установили Python, и теперь можем заняться програмированием.
Но пока только простейшим програмированием. Python позволяет очень легко запускать однострочные программы. Давайте попробуем это!
В меню пуск найдите группу Python`а и запустите питон пунктом "IDLE" (командная оболочка Питона)
Если ничего не произошло, то нажмите Пуск->Выполнить (Start->Run) и в открывшемся окне введите:
Это запустит "командную оболочку".Код:python
Теперь вы находитесь в "командной оболочке". Введите следующий код и нажмите enter: (не нужно вводить ">>>", так как это будет уже введено)
Вы только что написали первую программу, которая выводит на экран выражение "Hello, World"Код:>>> print "Hello, World!". "Командная оболочка" немедленно компилирует и запускает всё, что вы написали.
Это весьма полезно, при испытании таких вещей как определение переменных, а затем тестирование уравнений. Но об этом пойдёт речь в следующих уроках.
Теперь попробуйте ввести то, что написано жирным шрифтом. Вы должны увидеть результат, отмеченный синим цветом. Я дал пояснения в скобках.
Как вы видите сначала идёт код, а затем результат. Потом идут мои пояснения. Это основные команды Питона и пояснения, что эти команды делают.
>>> 1 + 1
2
>>> 20+80
100
>>> 18294+449566
467860
* * * *(Сложение/Additions)
>>> 6-5
1
* * * *(Вычитание/Subtraction)
>>> 2*5
10
* * * *(Умножение/Multiply)
>>> 5**2
25
* * * *(Возведение в степень/Exponential)
>>> print "1 + 2 это сумма"
1 + 2 это сумма
* * * *(Вывод написанного на экран)
>>> print "Один килобайт это 2^10 байт или", 2**10, "байт"
Один килобайт это 2^10 байт или 2**10 байт
* * * *(В предложении вы можете использовать переменные. Запятая служит для отделения каждой секции.)
>>> 21/3
7
>>> 23/3
7
>>> 23.0/3.0
7.6666...
(Деление/division. Если указаны целые числа, то и ответ будет целым, а если указанs дробные числа, то и ответ будет дробным (если указfано хоть одно дробное число, то тогда ответ будет дробным))
>>> 23%3
2
>>> 49%10
9
* * * *(Остаток от деления/remainder from a division)
Вот таблица, в которой представлены простейшие команды питона.
Запомните, что операторы в питоне называются также, как в математике:Код:Команда * Название * Англ. название *Пример * Результат *+ * * * Сложение * Addition * * * *4+5 * * *9 *- * * * Вычитание *Subtraction * * 8-5 * * *3 ** * * * Умножение *Multiplication *4*5 * * *20 */ * * * Деление * *Division * * * *8/2 * * *4 *% * * * Остаток * *Remainder * * * 15/4 * * 3 *** * * *Степень * *Exponential * * 2**3 * * 8
Вот примеры, которые бы вы возможно захотели рассмотреть:Код:Название *Англ. название *Оператор Скобки * *parentheses * * () Степень * exponents * * * ** Умножение multiplication ** Деление * division * * * *\ Остаток * remainder * * * % Сложение *addition * * * *+ Вычитание subtraction * * -
В первом примере сначала будет произведено действие "2*3" и затем прибавление 1. Это так, потому что умножение приоритетнее сложения.
>>> 1 + 2 * 3
7
>>> (1 + 2) * 3
9
Во втором примере сначала будет выполнено сложение "1+2", а потом умножение результата на три. Действия в скобках приоритетнее действий вне скобок, поэтому сначала выполнится сложение в скобках, и только потом умножение.
Также запомните, что все действия выполняются слева направо, если нет скобок!
Посмотрите эти примеры:
>>> 4 - 40 - 3
-39
>>> 4 - (40 - 3)
<span style=\'color:blue\'>-33
В первом примере сначала из 4 было вычтено 40, а потом 3
Во втором примере сначала из 40 было вычтено 3, а потом из 4 была вычтена полученная разность.
Последнее, что вам нужно знать для перехода к многострочным программам - коментарий. Наберите следующее:
Коментарий, это часть кода, которая не выполняется и просто напросто игнорируется интепретатором. В питоне вы делаете что-либо комментарием ставя символ решётки (#) перед этим.
>>>#Я коментарий, вы мне верите? %)
Решётка комментирует всё после себя на этой строчке. Вы можете набрать следующий код:
Коментарии очень важны для другого програмиста, который будет читать ваш код, но не для компьютера. Например объяснение какого-либо действия или строчки будет очень полезны другому програмисту.Код:>>> print "Еда очень вкусная" #съешь её Еда очень вкусная * * * *(нормальный результат, без отображения коментария) >>> print "Еда очень вкусная" съешь её * * * *(Вы получите сообщение об ошибке, о том, что компьютер не знает что означает "съешь её")
Также иногда бывает нужно отключить какую-то часть программы, для этого тоже можно закоментировать ужные строчки.
Всё, На этом урок 2 закончен. На следующем уроке мы познакомимся с многострочными программами а также научимся сохранять нашу программу в файл, чтобы мы смогли отправить её вашим друзьям
[dohtml]К оглавлению[/dohtml]
Переводчик урока - DelSt
[dohtml]<a name="l3"Урок 3 - Более сложные программы и переменные</span></a>[/dohtml]
Хорошо – мы можем создать однострочные программы. НУ И ЧТО? Вы хотите послать свои программы другим людям, чтобы они могли использовать их (программы), не зная как их писать
Написание программ для Питона очень просто. Для этого можно использовать блокнот или вордпад. Давайте откроем блокнот и напишем следующее:
Пишите это точно также как указано, с соблюдением всех запятых. Сохраните файл как “mary.pyw” и удостоверьтесь, что блокнот не добавляет в конце расширение .txt, для этого нужно указать ему сохранять как “any file”. Если вы не уверены, что он не дописал расширение .txt к файлу – выключите опцию «Скрывать известные расширения файлов» в проводнике Windows.Код:#Пример программы. print "Mary had a little lamb," print "it's fleece was white as snow;" print "and everywhere that Mary went", print "her lamb was sure to go."
Теперь запустите «программную оболочку» Питона (должна быть в меню «Пуск»), выберите “File > Open”, найдите файл mary.pyw и откройте его. Если вы не можете найти этот файл, то выберите опцию “All files” в меню. Откроется новое окно, в котором будет написан текст вашей программы. Для запуска программы выберите в меню “Run > Run Module” или нажмите F5. Ваша программа запустится в основном экране Питона именуемом шеллом (Python shell) и покажет следующее:
Вы можете также запустить программу из командной строки, например MS-DOSMary had a little lamb,
it's fleece was white as snow;
and everywhere that Mary went her lamb was sure to go.
Откройте командную строку и наберите cd xx\yy (где xx\yy – путь к папке с файлом .pyw) затем наберите ‘python mary.py ‘ и ваша программа запустится из командной строки
Более комплексная программа:
Теперь рассмотрим переменные. Откройте «командную оболочку» и выберите в меню “File > New Window” – откроется новое окно и введите в него следующий код: (можно методом copy-paste, но проверьте на точность синтаксиса)
Кaк Bы мoжeтe yвидeть, пepeмeнныe xpaнят вeличины, дляКод:#Демонстрация переменных print "This program is a demo of variables" v = 1 print "The value of v is now", v v = v + 1 print "v now equals itself plus one, making it worth", v v = 51 print "v can store any numerical value, to be used in other places later." print "for example, in a sentence. v is now worth", v, "which is a prime number." print "v times 5 equals", v*5 print "but v still only remains", v print "to make v five times bigger, you would have to type v = v * 5" v = v * 5 print "there you go, now v equals", v, "and not", v / 5
иcпoльзoвaния их впocлeдcтвии. Bы мoжeтe не только числа, но и тексты. Пoпpoбyйтe этy пpoгpaммy:
У вас получится:Код:#назначает переменным текст и складывает его word1 = "Good" word2 = "Morning" word3 = "to you too!" print word1, word2 sentence = word1 + " " + word2 + " " +word3 print sentence
Да, переменные могут содержать больше, чем одну букву, они могут содержать даже больше, чем числа. Здесь они содержат текст.<span style=\'color:blue\'>Good Morning
Good Morning to you too!
Как вы можете увидеть, слова могут быть сложены, чтобы сделать более длинное слово или даже предложение. Тем не менее, он не добавляет пробелов между складываемыми словами – следовательно, необходимо вкладывать пробелы отдельно, т.е. ” “ (здесь стоит один пробел между кавычками)
Очень хорошо. Теперь мы умеем делать более крупные программы и понимаем, что такое переменные. В следующем уроке мы рассмотрим, что такое операторы и как их использовать.
[dohtml]К оглавлению[/dohtml]
Переводчик урока - swan
[dohtml]<a name="l5">Урок 4 - Циклы</a>[/dohtml]
Представте, что вам нужна программа, повторяющая чтолибо 20 раз. Что вы сделаете? Вы могли бы скопировать 2- раз нужное вам действие, но тогда вы получите очень медленную громоздкую, и нечитаемую программу.
Или же вы можете "сказать" компьютеру, чтобы он повторял это в от точки A до точки B, до того времени пока не наступит момент, когда вам нужно будет остановить действие.
Вот пример цикла на питоне:
[code]
a = 0
while a < 10:
[dohtml]<a name="l5">Урок 5 - Многофункциональный!</a>[/dohtml]
На прошлом уроке я сказал, что мы будем копаться в целевом программировании. Оно включает ввод данных пользователем, а ввод данных пользователем требует вещи, называемые функциями.
Что такое функции? Это небольшие подпрограммы, которые выполняют специальные действия, и которые можно включить в собственную, большую программу. Это экономит ваше время и усилия, когда нужно указать компьютеру, что делать в стандартных ситуациях, к примеру, когда пользователь что-то вводит с клавиатуры.
Устройство функции очень просто. Вы вводите в неё какие-то данные (input), а затем она сама выдаёт некоторое выходное значение (output). Понятно? Вот общая форма записи функции:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:50px; overflow:auto"><div dir="ltr" style="text-align:left;">
function_name(parameters)</div></pre>
</div>
[/dohtml]
Вот видите, как просто?
Имя функции (Function_name) указывает, какую функцию вы хотите использовать. Например, функция raw_input, которая будет первой функцией, которую мы будем использовать.
Параметры (Parameters) указывают функции, что выполнять. Например, в функции, умножающей данное число на 5, содержимое параметров (parameters) указывает функции, какое именно число нужно умножить на 5. Поместите в параметры число 70, и функция выполнит действие 70 x 5.
Так, всё это, конечно, хорошо, что программа может умножать число на 5, но как она нам это сможет показать? Ваша программа должна видеть результаты происходящего, чему равняется 70 x 5, или увидеть, что где-то есть проблема (например, вы написали буквы вместо числа). Как функция показывает, что она делает?
Ну, на самом деле, когда компьютер запускает функцию, он на самом деле не видит её имя, а только её результат. Давайте назовём функцию, умножающую число на 5, multiply(). Вы пишете число, которое хотите умножить, в скобках. Итак, если вы напишете:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:50px; overflow:auto"><div dir="ltr" style="text-align:left;">
a = multiply(70)</div></pre>
</div>
[/dohtml]
Компьютер на самом деле увидит вот что:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:50px; overflow:auto"><div dir="ltr" style="text-align:left;">
a = 350</div>
</div>
[/dohtml]
(P.S. не нужно набирать этот код).
Функция превращается в число, результат действий с её параметрами.
Теперь давайте попробуем это сделать с настоящей функцией и посмотрим, что будет. Функция под назваием raw_input, запрашивает пользователя что-то напечатать. Затем она превращает это в строку текста. Попробуйте вот такой код:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:114px; overflow:auto"><div dir="ltr" style="text-align:left;">
# Эта строчка сделает переменую 'a' равной тому, что вы введёте
a = raw_input("Напечатайте что-то и оно появится на экране:"
# Эта строчка выводит значение 'a' на экран
print a</div></pre>
</div>
[/dohtml]
Скажем, в этой программе вы написали 'привет', когда вас попросили что-то написать. Для копьютера эта программа будет выглядеть так:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:66px; overflow:auto"><div dir="ltr" style="text-align:left;">
a = "привет"
print "привет"</div></pre>
</div>
[/dohtml]
Помните, переменная - просто место в памяти. Для компьютера переменная 'a' не выглядит как 'a' - она выглядит как значение, которое вы в неё ввели. Также и функции - для компьтера они выглядят как значение, которое они возвращают.
Давайте напишем другую программу, которая будет работать как калькулятор. Теперь она будет делать кое что намного более интересное, чем предыдущая. У неё будет меню, которое будет запрашивать, что вы хотите сделать: умножить, сложить, разделить или вычесть два числа. Единственная проблема - функция raw_input превращает введённые вами символы в текст, но нам нужно, к примеру, число 1, а не символ 1 (да-да, в Питоне это разные вещи). (И не только в Питоне - прим. перев.)
К счастью, есть функция input, которая передаёт введённые данные в программу, но на этот раз в виде числа. Если вы введёте через input целое число, и поместите его в переменную, то она также будет иметь тип целого чила - её можно будет складывать, вычитать и т.д.
Итак, давайте разработаем калькулатор надлежащим образом. Нам нужно меню, которое возвращается каждый раз, когда вы выполнили действия. Другими словами,нам нужно чтобы оно зацикливалось (подсказка!!!), пока (while, большая подсказка!!!) вы говорите программе что делать, она должна выполняться.
Мы хотим сделать, чтобы команды меню работали по нажатию цифры. Мы используем функции ввода числа (input) и условный цикл.
Давайте сначала напишем простым текстом, что мы хотим сделать:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:498px; overflow:auto"><div dir="ltr" style="text-align:left;">
НАЧАТЬ ПРОГРАММУ
напечатать стартовое сообщение
Пока работает программа, делать это:
#Печатаем, какие у нас есть опции меню
print Опция 1 - сложить
print Опция 2 - вычесть
print Опция 3 - умножить
print Опция 4 - разделить
print Опция 5 - выйти из программы
спросить, какую опцию выберет пользователь
если это опция 1:
спросить первое число
спросить второе число
сложить их
вывести результат на экран
если это опция 2:
спросить первое число
спросить второе число
вычесть из первого второе
вывести результат на экран
если это опция 3:
спросить первое число
спросить второе число
умножить их
вывести результат на экран
если это опция 4:
спросить первое число
спросить второе число
разделить первое на второе
вывести результат на экран
если это опция 5:
остановить цикл
Напечатать на экране сообщение о завершении работы программы
ЗАКОНЧИТЬ ПРОГРАММУ</div></pre>
</div>
[/dohtml]
Давайте теперь запишем это в форме, понятной Питону:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:498px; overflow:auto"><div dir="ltr" style="text-align:left;">
#программа-калькулятор
#Эта переменная указывает, следует ли продолжать цикл
# 1 означает цикл, любое другое значение - остановка цикла
loop = 1
#Эта переменная хранит выбор пользователя в меню:
choice = 0
while loop == 1:
#печатаем, какие у нас есть опции
print "Добро пожаловать в calculator.py"
print "Вы можете:"
print " "
print "1) Сложить"
print "2) Вычесть"
print "3) Умножить"
print "4) Разделить"
print "5) Выйти из программыpy"
print " "
choice = input("Сделайте выбор: "
if choice == 1:
add1 = input("Прибавить это: "
add2 = input("к этому: "
print add1, "+", add2, "=", add1 + add2
elif choice == 2:
sub2 = input("Вычесть это: "
sub1 = input("из этого: "
print sub1, "-", sub2, "=", sub1 - sub2
elif choice == 3:
mul1 = input("Умножить это: "
mul2 = input("на это: "
print mul1, "*", mul2, "=", mul1 * mul2
elif choice == 4:
div1 = input("Разделить это: "
div2 = input("на это: "
print div1, "/", div2, "=", div1 / div2
elif choice == 5:
loop = 0
print "Спасибо, что использовали calculator.py!"</div></pre>
</div>
[/dohtml]
Ура! Вот это программа! Вставьте её текст в среду Питон, сохраните как 'calculator.py' и запустите. Прогоните её несколько раз, попробуйте все опции, вводя целые цисла (без запятой), дробные (с цифрами после запятой, в программировании они называются числами с плавающей запятой). Попробуйте написать текст и увидите, как в прорамме вызывается ошибка и она перестаёт работать. Позднее я объясню, что там происходит.
Итак, всё это, конечно, хорошо, что мы можем использовать готовые функции, но как нам самим написать свою функцию, чтобы сэкономить время, и чтобы затем её использовать в других программах? Вот где приходит на помощь оператор def. (Оператор - это просто что-то, что указывает Питону, что нужно сделать, к примеру, опреатор '+' указывает Питону сложить числа, оператор 'if' указывает сделать что-то, если выпольняются определённые условия и т.д.)
Вот как работае оператор 'def':
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:178px; overflow:auto"><div dir="ltr" style="text-align:left;">
def function_name(parameter_1_variable,parameter_2_variable):
{Вот код функции}
{ещё код функции}
{ещё код функции}
return {текст или число, возращающемое в основную программу}
{Этот код уже не отностися к функции}
{потому что он без отступа}
#Не забывате ставить двоеточие ":" в конце строчки, начинающейся на 'def'</div></pre>
</div>
[/dohtml]
Фунции выполняются абсолютно независимо от основной программы. Помните, что я говорил, что когда компьютер заходит в функцию, он видит не саму функцию, а значение, которое она возвращает? Вот цитата:
[dohtml]
<div style="margin:20px; margin-top:5px; ">
<div class="smallfont" style="margin-bottom:2px">Quote:</div>
<table cellpadding="6" cellspacing="0" border="0" width="100%">
<tr>
<td class="alt2" style="border:1px inset">
переменная - просто место в памяти. Для компьютера переменная 'a' не выглядит как 'a' - она выглядит как значение, которое вы в неё ввели. Также и функции - для компьтера они выглядят как значение, которое они возвращают.
</td>
</tr>
</table>
</div>
[/dohtml]
Итак, на самом деле - функция это не просто способ удобно копировать и вставлять куски кода. Она более похожа на миниатюрную программу, которой даются некоторые пераметры - затем она запускается и возвращает значение. Ваша основная программа видит только возвращаемое значение. Если функция в ходе своего выполнения выполняла множество действий, а в последней строчке было
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:50px; overflow:auto"><div dir="ltr" style="text-align:left;">
return 1</div></pre>
</div>
[/dohtml]
то всё, что увидит ваша программа будет число 1, на месте, где было имя функции. Она не будет знать, что ещё делала программа.
Т.к. это по сути отдельная программа, функция не будет видеть переменных главной программы, а та не будет видеть переменных функции.
Например, вот функция, печатающая слово [dohtml]"привет"[/dohtml] на экране, а затем возвращающая число 1234 в главную программу:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:146px; overflow:auto"><div dir="ltr" style="text-align:left;">
#Ниже описание функции
def hello():
print 'привет'
return 1234
#А здесь функция вызывается
print hello()</div></pre>
</div>
[/dohtml]
Подумайте о последней строчке кода. Что она делает? Наберите программу (комментарии можете пропустить) и помотрите, что она делает. Результат её работы выглядит так:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:66px; overflow:auto"><div dir="ltr" style="text-align:left;">
<font color="blue">привет
1234</font></div></pre>
</div>
[/dohtml]
Так что же произошло?
1) Когда выполнялась строчка 'print hello', выполнилась функция 'hello'.
2) Функция 'hello' напечатала [dohtml]"привет"[/dohtml] на экране, затем вернула значение 1234 в главную программу
3) Главная программа теперь видит эту строчку как 'print 1234', и в результате печатает '1234'
Вот и всё, что произошло. Помните, что главная программа даже не догадывается, что было напечатано слово [dohtml] "привет"[/dohtml] которое мы напечатали на экране. Всё, что она видела, было число 1234, и она и вывела его на экране.
Есть ещё одна вещь, которую мы раскроем в этом (ужасно большом) уроке - передача параметров в функцию. Вспомните программу-калькулятор. Она не выглядела слегка громоздкой? Я думаю, да, так что давайте перепишем её, используя функции.
Для разработки - сначала определим все функции, используя оператор 'def' (помните, есть такой оператор).
Затем во всей нашей программе заменим тот громоздкий код на аккуратные функции. Это позволит значительно легче разбираться в программе в дальнейшем.
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:498px; overflow:auto"><div dir="ltr" style="text-align:left;">
#Программа калькулятор
#ЗДЕСЬ НЕТ ВЫПОЛНЯЕМОГО КОДА, ЛИШЬ ОПИСАНИЕ ТОГО, ЧТО МЫ БУДЕМ ДЕЛАТЬ ДАЛЬШЕ
#Здесь мы определим функции
#Эта выводит на экрам меню и запрашивает выбор пользователя
def menu():
#печатаем, какие имеются опции
print "Добро пожаловать в calculator.py"
print "Вы можете выполнить:"
print " "
print "1) Сложение"
print "2) Вычитание"
print "3) Умножение"
print "4) Деление"
print "5) Закрыть calculator.py"
print " "
return input ("Выберите номер опции: "
#Эта складывает 2 данных числа
def add(a,b ):
print a, "+", b, "=", a + b
#Эта вычитает из одного числа другое
def sub(a,b ):
print b, "-", a, "=", b - a
#Эта умножает 2 данных числа
def mul(a,b ):
print a, "*", b, "=", a * b
#Эта делит одно число на другое
def div(a,b ):
print a, "/", b, "=", a / b
#ТЕПЕРЬ ЗАПУСКАЕТСЯ САМА ПРОГРАММА
loop = 1
choice = 0
while loop == 1:
choice = menu()
if choice == 1:
add(input("Сложить число: ",input("и число: "
)
elif choice == 2:
sub(input("Вычесть число: ",input("из числа: "
)
elif choice == 3:
mul(input("Умножить число: ",input("на число: "
)
elif choice == 4:
div(input("Разделить число: ",input("на число: "
)
elif choice == 5:
loop = 0
print "Спасибо, что воспользовались программой calculator.py!"
#ТЕПЕРЬ ПРОГРАММА ЗАКОНЧИЛА ВЫПОЛНЕНИЕ</div></pre>
</div>
[/dohtml]
Первоначальная программа имела 34 строки кода. В новой их 35! Она чуть-чуть длиннее, но если разобраться, гораздо проще.
Вы объявили все функции сверху. Это не чаcть программы - это просто несколько маленьких программок, которые вы вызовите позднее. Вы можете даже заново использовать их в других программах, если не хотите заново рассказывать компьютеру как складывать и вычитать.
Если вы взглянете на главную часть программы (между строками 'loop = 1' и [dohtml]'print "Thankyou for..."'[/dohtml]), она окажется размером всего 15 срок. Выходит, если писать эту программу таким образом, нужно написать всего около 15 строк вместо 34, если не использовать функции.
Наконец, небольшое отступление, я объясню, что означате строчка [dohtml]'add(input("Сложить число: ",input("и число: "
)'[/dohtml].
Я хотел поместить всё в одну строку с как можно меньшим числом переменных. Помните, как выглядят функции для главной программы? Как значение, которое они возвращают. Если вы ввели числа 2 и 3, главная программа увидит:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:50px; overflow:auto"><div dir="ltr" style="text-align:left;">
add(2,30)</div></pre>
</div>
[/dohtml]
Запустится функция сложения. У неё нет опрератора 'return' - она не возвращает ничего в главную программу. Она просто складывает два числа и выводит сумму на экран, а главная программа ничего этого не видит.
Вместо такой записи [dohtml]'(input("Сложить число: ",input("и число: "
)'[/dohtml] в качестве параметров функции сложения можно использовать переменные
Например:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:82px; overflow:auto"><div dir="ltr" style="text-align:left;">
num1 = 45
num2 = 7
add(num1,num2)</div></pre>
</div>
[/dohtml]
Вы можете даже вставлять числа прямо в функцию:
[dohtml]
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:50px; overflow:auto"><div dir="ltr" style="text-align:left;">
add(45,7)</div></pre>
</div>
[/dohtml]
Это потому, что единственное, что видит функция - это величины принимаемых параметров. Эти величины вводятся в переменные, которые упомянуты при объявлении функции 'add' (строчка[dohtml] 'def add(a,b)' [/dohtml]). Функция затем использует эти параметры при выполнении своей работы.
Вкратце:
*) Единственное, что функция видит в главной программе - это параметры
*) Единственная вещь, которую главная программа видит в функции - это возвращаемые значения
Уфф! Какой сногсшибательный урок!!! Но мы всё-таки прошли его! Отлично!
[dohtml]
<table width="100%" border="0">
<tr>
<td width="50%"><div align="left">К оглавлению</div></td>
<td width="50%"><div align="right">Английская версия урока </div></td>
</tr>
</table>
[/dohtml]
Переводчик урока - General
[dohtml]<a name="l6">Урок 6 - Кортежи (матем.), списки и словари</a>[/dohtml]
Ваш мозг ещё не переварил содержимое предыдущего урока? Не унывайте – этот урок будет довольно простым. Мы перейдем к более глубокому виду переменных – массивам.
Представьте, что переменные содержат один бит информации. Они могут вырвать (не только на обсуждении) эту информацию из любой точки. Их бит информации может измениться в переменных в любое время – большие, чем те, в которых они созданы – они могут хранить информацию, которую можно изменить в нужное время.
Но что, если вам нужно создать длинный список информации, который не изменяется со временем? Скажем, например имена месяцев года.
Или может быть длинный список информации, который изменяется со временем? Скажем, например имена всех ваших кошек. У вас могли появиться новые кошки или умереть старые.
Как насчет телефонной книги? Вы имеете набор имен, к которым прилагаются номера. Как вы это организуете?
Для этих трех проблем Питон предлагает три различных варианта решения – кортежи, списки и словари.
Списки – списки значений. Каждое значение имеет свой номер – первое – 0, второе – 1, третье – 2 и т.д. Вы можете удалять значения из списка и добавлять новые значения к концу. Например, имена ваших кошек
Кортежи подобны спискам, но вы не можете изменять их значения. Значения, которые вы зададите им изначально, будут действовать до окончания работы с программой. Кроме того, каждое значение перечислено с нуля, для облегчения ссылки. Например, имена месяцев года.
Словари подобны тому, что их название предлагает - словарь. В словаре, Вы имеете 'индексные' слова и для каждого из них определение. В питоне, слово называют 'ключом', а определение 'значением'. Значения в словаре не перечисляются - они не находятся в каком либо определенном порядке, ни один - ключ не означает ту же самую вещь. Вы можете добавить, удалить, и изменить значения в словарях. Например. Телефонная книга.
Теперь мы знаем, что они делают. Давайте рассмотрим их использование:
КОРТЕЖИ
Кортежи очень удобно создавать. Вы даете своему кортежу имя, после чего идет список его значений. Например, месяцы года:
Обратите внимание, что ‘\’ обозначает перенос значений на следующую строку – это облегчает рассмотрение структурности кортежа.Код:months = ('January','February','March','April','May','June' *,\ 'July','August','September','October','November',' *December')
Технически вы не обязаны помещать круглые скобки вокруг списка, но в некоторых случаях вызывает ошибки
Вы можете оставлять пробелы между запятых, если вам такой вариант больше нравится
Питон расставляет значения в порядке, указанном вами, начинающемся с нуля. Тогда при предыдущем примере у вас получится следующее:
Мы знаем, что, можно довольно легко вспомнить значения из кортежа. Они - точно такие же, как перечисляемые переменные. Вот - пример:Код:Index *Value 0 * * January 1 * * February 2 * * March 3 * * April 4 * * May 5 * * June 6 * * July 7 * * August 8 * * September 9 * * October 10 * *November 11 * *December
СПИСКИКод:#Сообщение компьютеру имен месяцев: months = ('January','February','March','April','May','June' *,\ 'July','August','September','October','November',' *December') #Вывод января на экран: print months[0] #Вывод октября на экран: print months[9] #Создание переменной и присвоение ей значения августа x = months[7] print x #помещение зимних месяцев (южного полушария) в отдельную переменную: winter = months[5:8] print winter
Списки очень похожи на кортежи. Они модифицируемы (изменяемы – как обычно говорят программисты), так, что их значения могут быть изменены. Наиболее чаще используются списки, нежели кортежи.
Списки определяются аналогично кортежам. Например у вас есть пять кошек: Tom, Snappy, Kitty, Jessie and Chester. Чтобы поместить их в список вам нужно написать такую строку:
Как Вы видите, код аналогичен кортежам, за исключением того, что все значения помещаются между квадратными, а не круглыми скобками. Кроме того, в кортежах не было пространства после запятой.Код:cats = ['Tom', 'Snappy', 'Kitty', 'Jessie', 'Chester']
Возврат значений из списков аналогичен кортежам – например вам нужно вывести имя вашей третей кошки:
Вы можете также вставить диапазон значений. Например вывод имен первых трех кошек будет выглядеть как print cats [0:2]Код:print cats[2]
Добавить новое значение, например у вас появилась новая кошка по имени Catherine можно следующим образом:
[продолжение следует]Код:cats.append('Catherine')
Переводчик урока - swan
это зарезервированные места для [продолжение следует], т.е. для Уроков, иначе посты будут слишком большие
Носителем суверенитета и единственным источником власти в Российской Федерации является её многонациональный народ. Гл.1, ст.3. Конституции РФ
- Папа, а у царей бывает мания величия? - Иногда бывает. - А кем они тогда себя мнят? - Народом.
Я взрослая женщина - и я семь лет читала форумы. Настя
Если царь говорит, что чем ниже цена рубля, тем больше доход, то удивляться последствиям его правления не приходится. lada
На данном этапе развития страны считаю наиболее важным отстранить от управления бездарей-троечников в пользу тех людей, которые могут мыслить системно хотя бы на год вперёд. Винни
Многие склонны путать два понятия: «Отечество» и «Ваше превосходительство». Салтыков-Щедрин
С плохими законами и хорошими чиновниками вполне можно править страной. Но если чиновники плохи, не помогут и самые лучшие законы. Бисмарк
Как только дети, жены и любовницы начинают заниматься бизнесом - жди беды. Лукашенко
Т.к. ремоторизацию Ан-2 наладить не удалось, принято решение построить десяток Звезд Смерти для секторального захвата галактики. Рогозин
Это было не падение, Маск показал всем красненькую пипирку. Павел Чичиков 5-jan-2021 inv-ing
Вчера полчаса потратил на краткий обзор *.py файлов в циве. Огромные(!) возможности, уже подумываю о том, чтобы поставить среду, купить книжку, скачать туториал и что-нибудь поменять под себя в интерфейсе
Внимание!У меня солжилось впечатление за этот вчерашний обзор, что читерить можно практически безгранично (в плане подсматривать, а не вносить изменения). Вопрос, есть ли какие-то встроенные в игру ограничения, кроме морально-этических качеств игроков?
В мултьиплеере WorldBuilder отключён, значит можно и в сценарии отключить, наверное. (Я всё клоню в сторону соревнований). Хотя где можно отключить, там можно будет и включить.Originally posted by DelSt*1.11.2005 - 17:50
GooRoo
Да, много чего заскриптовано на питоне.
Да, читерить world bilder`ом можно практически безгранично. Я тут ради теста добавил себе десяток самолётов. Разведал ими почти всю карту и в тот же ход добавил пару модернов, и вынес соседей![]()
И ещё. Я имел в виду то, что могу так свои локальные *.py пропадчить, что буду видеть больше, чем положено, не привлекая ничего стороннего. Например, хоп и вылез попап "Внимание! Вашингтон построит Пирамиды быстрее вас на 2 хода"![]()