Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
fullcircle:28:python_ч_2 [2010/09/04 16:19] для кода нужны были табуляторы |
fullcircle:28:python_ч_2 [2018/01/08 20:54] (текущий) [Подстановка переменных] |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
//Автор — Грэг Валтерс (Greg Walters)// | //Автор — Грэг Валтерс (Greg Walters)// | ||
</style> | </style> | ||
+ | |||
- [[..:27:python_ч_1|Программа на Python — часть 1]] | - [[..:27:python_ч_1|Программа на Python — часть 1]] | ||
Строка 15: | Строка 16: | ||
- [[..:36:python_ч_10|Программа на Python — часть 10]] | - [[..:36:python_ч_10|Программа на Python — часть 10]] | ||
- [[..:37:python_ч_11|Программа на Python — часть 11]] | - [[..:37:python_ч_11|Программа на Python — часть 11]] | ||
+ | - [[..:38:python_ч_12|Программа на Python — часть 12]] | ||
+ | - [[..:39:python_ч_13|Программа на Python — часть 13]] | ||
+ | - [[..:40:python_ч_14|Программа на Python — часть 14]] | ||
- | Впрошлом уроке мы рассмотрели простую программу, которая использовала raw_input для получения ответа пользователя, простые типы переменных и простой цикл "for". В этом уроке мы рассмотрим ещё больше типов переменных и напишем ещё больше программ. | + | В прошлом уроке мы рассмотрели простую программу, которая использовала input для получения ответа пользователя, простые типы переменных и простой цикл "for". В этом уроке мы рассмотрим ещё больше типов переменных и напишем ещё больше программ. |
=====Списки===== | =====Списки===== | ||
Строка 26: | Строка 30: | ||
Чтобы создать список, мы заключили все значения в квадратные скобки ( '[' и ']' ). Мы назвали наш список 'months'. Чтобы использовать список, мы дадим команду print months[0] или months[1] (которые выведут на экран 'Jan' или 'Feb'). Помните: счет начинается с нуля. Чтобы найти длину списка, можно использовать такую функцию: | Чтобы создать список, мы заключили все значения в квадратные скобки ( '[' и ']' ). Мы назвали наш список 'months'. Чтобы использовать список, мы дадим команду print months[0] или months[1] (которые выведут на экран 'Jan' или 'Feb'). Помните: счет начинается с нуля. Чтобы найти длину списка, можно использовать такую функцию: | ||
<code> | <code> | ||
- | print len(months) | + | print (len(months)) |
</code> | </code> | ||
которая вернёт 12. | которая вернёт 12. | ||
- | **Ещё один пример списков — категории в поваренной книге.** | + | Ещё один пример списков — категории в поваренной книге. Например... |
- | Например... | + | |
<code> | <code> | ||
categories = ['Main dish','Meat','Fish','Soup','Cookies'] | categories = ['Main dish','Meat','Fish','Soup','Cookies'] | ||
Строка 50: | Строка 53: | ||
<code> | <code> | ||
strng = 'The time has come' | strng = 'The time has come' | ||
- | print strng[1] | + | print (strng[1]) |
</code> | </code> | ||
Результат будет символ 'h'. Запомните: счёт начинается с 0, поэтому первый символ обозначается [0], второй — [1], третий — [2], и так далее. Если мы хотим отобразить символы начиная с положения 4 и заканчивая положением 8, то набираем: | Результат будет символ 'h'. Запомните: счёт начинается с 0, поэтому первый символ обозначается [0], второй — [1], третий — [2], и так далее. Если мы хотим отобразить символы начиная с положения 4 и заканчивая положением 8, то набираем: | ||
<code> | <code> | ||
- | print strng[4:8] | + | print (strng[4:8]) |
</code> | </code> | ||
результат будет 'time'. Как цикл for из первой части, счет остановится на 8, но не возвращает восьмой символ, которым является пробел после 'time'. | результат будет 'time'. Как цикл for из первой части, счет остановится на 8, но не возвращает восьмой символ, которым является пробел после 'time'. | ||
Строка 60: | Строка 63: | ||
Чтобы найти длину строки используем функцию len(): | Чтобы найти длину строки используем функцию len(): | ||
<code> | <code> | ||
- | print len(strng) | + | print (len(strng)) |
</code> | </code> | ||
Результатом будет 17. Если мы хотим найти, где в строке находится слово 'time', то набираем | Результатом будет 17. Если мы хотим найти, где в строке находится слово 'time', то набираем | ||
Строка 74: | Строка 77: | ||
При помощи команды split можно получить отдельные слова в строке. Разделим строку по пробелам командой: | При помощи команды split можно получить отдельные слова в строке. Разделим строку по пробелам командой: | ||
<code> | <code> | ||
- | print strng.split(' ') | + | print (strng.split(' ')) |
</code> | </code> | ||
которая вернёт список, состоящий из ['The', 'time', 'has', 'come']. Это очень мощная команда. Есть и другие операции над строками, которые мы рассмотрим позже. | которая вернёт список, состоящий из ['The', 'time', 'has', 'come']. Это очень мощная команда. Есть и другие операции над строками, которые мы рассмотрим позже. | ||
Строка 82: | Строка 85: | ||
Есть ещё одна вещь, о которой я хочу рассказать до того, как мы перейдём к следующей программе-примеру. Если мы хотим напечатать строку, включающую текст и переменную, можно использовать подстановку переменных. Это просто. Если мы хотим подставить строку, мы пишем '%s' и затем говорим Python, что надо подставить. Например, чтобы напечатать название месяца из нашего списка, можно использовать: | Есть ещё одна вещь, о которой я хочу рассказать до того, как мы перейдём к следующей программе-примеру. Если мы хотим напечатать строку, включающую текст и переменную, можно использовать подстановку переменных. Это просто. Если мы хотим подставить строку, мы пишем '%s' и затем говорим Python, что надо подставить. Например, чтобы напечатать название месяца из нашего списка, можно использовать: | ||
<code> | <code> | ||
- | print 'Month = %s' % month[0] | + | print ('Month = %s' % months[0]) |
</code> | </code> | ||
Эта команда выведет 'Month = Jan'. Если хотите подставить целое число, используйте '%d'. Рассмотрим пример ниже: | Эта команда выведет 'Month = Jan'. Если хотите подставить целое число, используйте '%d'. Рассмотрим пример ниже: | ||
<code> | <code> | ||
- | Months = ['Jan','Feb','Mar','Apr', | + | Months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] |
- | 'May','Jun','Jul','Aug','Sep','Oct',' | + | DaysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31] |
- | Nov','Dec'] | + | |
- | DaysInMonth = [31,28,31,30,31,30,31,31,30,31, | + | |
- | 30,31] | + | |
for cntr in range(0,12): | for cntr in range(0,12): | ||
- | print '%s has %d days.' % (Months[cntr], | + | print ('%s has %d days.' % (Months[cntr],DaysInMonth[cntr])) |
- | DaysInMonth[cntr]) | + | |
</code> | </code> | ||
Вывод этой программы: | Вывод этой программы: | ||
Строка 116: | Строка 115: | ||
или так: | или так: | ||
<code> | <code> | ||
- | st = “The time has come” | + | st = "The time has come" |
</code> | </code> | ||
разницы никакой нет. Но если надо включить в строку одинарную кавычку, как в примере ниже: | разницы никакой нет. Но если надо включить в строку одинарную кавычку, как в примере ниже: | ||
Строка 124: | Строка 123: | ||
вы увидите ошибку синтаксиса. Надо делать так: | вы увидите ошибку синтаксиса. Надо делать так: | ||
<code> | <code> | ||
- | st = “He said he's on his way” | + | st = "He said he's on his way" |
</code> | </code> | ||
Думайте о кавычках так. Чтобы определить строку, нужно поместить её между кавычками — одна в начале строки, а другая в конце — и они должны совпадать. Если вам надо вставить кавычки внутрь, используйте другой тип внешних кавычек, как в примере сверху. У вас может появиться вопрос, а если я захочу определить строку подобную “She said “Don't Worry””? В таком случае можно определить её так: | Думайте о кавычках так. Чтобы определить строку, нужно поместить её между кавычками — одна в начале строки, а другая в конце — и они должны совпадать. Если вам надо вставить кавычки внутрь, используйте другой тип внешних кавычек, как в примере сверху. У вас может появиться вопрос, а если я захочу определить строку подобную “She said “Don't Worry””? В таком случае можно определить её так: | ||
<code> | <code> | ||
- | st = 'She said “Don\'t Worry”' | + | st = 'She said "Don\'t Worry"' |
</code> | </code> | ||
Обратите внимание на обратный слэш перед одинарной кавычкой в 'Don't'. Он называется экранирующим символом и сообщает Python, что в этом случае надо напечатать одинарную кавычку, не считая её разграничителем строк. Существует много последовательностей управляющих символов. Некоторые из них: '\n' — новая строка, '\t' — табуляция. Мы рассмотрим их в одном из следующих примеров. | Обратите внимание на обратный слэш перед одинарной кавычкой в 'Don't'. Он называется экранирующим символом и сообщает Python, что в этом случае надо напечатать одинарную кавычку, не считая её разграничителем строк. Существует много последовательностей управляющих символов. Некоторые из них: '\n' — новая строка, '\t' — табуляция. Мы рассмотрим их в одном из следующих примеров. | ||
Строка 152: | Строка 151: | ||
Далее, мы должны обсудить комментарии. Комментарии важны по нескольким причинам. Они не только говорят вам или другим людям, что вы пытаетесь делать, но и напомнят вам через полгода, что же вы хотели сделать. Когда вы будете писать много программ, комментарии станут важными. Также при их помощи вы заставите Python игнорировать какие-либо части кода. Чтобы закомментировать строку, поставьте перед ней знак '#'. Например: | Далее, мы должны обсудить комментарии. Комментарии важны по нескольким причинам. Они не только говорят вам или другим людям, что вы пытаетесь делать, но и напомнят вам через полгода, что же вы хотели сделать. Когда вы будете писать много программ, комментарии станут важными. Также при их помощи вы заставите Python игнорировать какие-либо части кода. Чтобы закомментировать строку, поставьте перед ней знак '#'. Например: | ||
- | <code>#</code> Это комментарий | + | <code>#</code> Это - комментарий. |
Комментарии можно вставлять в любое место в строке, но помните, что Python проигнорирует всё, что идёт после '#'. | Комментарии можно вставлять в любое место в строке, но помните, что Python проигнорирует всё, что идёт после '#'. | ||
Строка 171: | Строка 170: | ||
а на Python — так: | а на Python — так: | ||
<code> | <code> | ||
- | если x == y: | + | if x == y: |
делай то-то | делай то-то | ||
- | в противном случае: | + | else: |
делай что-то другое | делай что-то другое | ||
другие команды | другие команды | ||
</code> | </code> | ||
Самое главное заключается в следующем: | Самое главное заключается в следующем: | ||
- | |||
- Завершайте операторы if и else двоеточием. | - Завершайте операторы if и else двоеточием. | ||
- | |||
- Делайте ОТСТУПЫ в вашем коде. | - Делайте ОТСТУПЫ в вашем коде. | ||
Строка 187: | Строка 184: | ||
x = 5 | x = 5 | ||
if x == 1: | if x == 1: | ||
- | print 'X is 1' | + | print ('X is 1') |
elif x < 6: | elif x < 6: | ||
- | print 'X is less than 6' | + | print ('X is less than 6') |
elif x < 10: | elif x < 10: | ||
- | print 'X is less than 10' | + | print ('X is less than 10') |
else: | else: | ||
- | print 'X is 10 or greater' | + | print ('X is 10 or greater') |
</code> | </code> | ||
- | Обратите внимание: мы используем оператор '<' для проверки, что x МЕНЬШЕ, ЧЕМ определенное значение — в этом случае 6 и 10. Другие часто используемые операторы сравнения: больше чем '>', меньше, чем или равно '<=', больше чем или равно '>=' и не равно '!='. | + | Обратите внимание: мы используем оператор '<' для проверки, что x МЕНЬШЕ, ЧЕМ определенное значение — в этом случае 6 и 10. Другие часто используемые операторы сравнения: больше чем '>', меньше, чем или равно '%%<=%%', больше чем или равно '>=' и не равно '!='. |
=====Оператор while===== | =====Оператор while===== | ||
- | В заключении мы рассмотрим простой пример оператора while. Этот оператор позволяет повторять цикл из действий несколько раз до достижения определенного порогового значения. Рассмотрим простой пример: присвоим переменной “loop” значение 1. Затем, пока значение переменной loop меньше или равно 10, выводить значение переменной “loop”, прибавлять к нему 1 и продолжать до тех пор, пока переменная “loop” не станет больше 10, и выйти: | + | В заключении мы рассмотрим простой пример оператора while. Этот оператор позволяет повторять цикл из действий несколько раз до достижения определенного порогового значения. Рассмотрим простой пример: присвоим переменной "loop" значение 1. Затем, пока значение переменной loop меньше или равно 10, выводить значение переменной "loop", прибавлять к нему 1 и продолжать до тех пор, пока переменная "loop" не станет больше 10, и выйти: |
<code> | <code> | ||
loop = 1 | loop = 1 | ||
while loop <= 10: | while loop <= 10: | ||
- | print loop | + | print (loop) |
loop = loop + 1 | loop = loop + 1 | ||
</code> | </code> | ||
Строка 218: | Строка 216: | ||
10 | 10 | ||
</code> | </code> | ||
- | Это то, что мы хотели увидеть. На рисунке 1 (справа вверху) изображен похожий пример, который чуть более сложен, но всё-таки простой. | + | Это то, что мы хотели увидеть. |
- | В этом примере, мы рассматриваем всё вместе: оператор if, цикл while, команду raw_input, последовательность для новой строки, операторы присваивания и сравнения — всё это в программе из 8 строк. | + | Следующий пример чуть более сложен, но всё-таки простой. |
+ | |||
+ | <code> | ||
+ | loop = 1 | ||
+ | while loop == 1: | ||
+ | response = input("Enter something or 'quit' to end => ") | ||
+ | if response == 'quit': | ||
+ | print ('quitting') | ||
+ | loop = 0 | ||
+ | else: | ||
+ | print ('You typed %s' % response) | ||
+ | </code> | ||
+ | |||
+ | В этом примере, мы рассматриваем всё вместе: оператор if, цикл while, команду input, последовательность для новой строки, операторы присваивания и сравнения — всё это в программе из 8 строк. | ||
Если мы запустим этот пример, то увидим: | Если мы запустим этот пример, то увидим: | ||
Строка 242: | Строка 253: | ||
Обратите внимание на то, что при вводе 'QUIT' программа не завершила работу. Это потому, что мы сравниваем значение переменной response с 'quit' (response == 'quit'). 'QUIT' НЕ равно 'quit'. | Обратите внимание на то, что при вводе 'QUIT' программа не завершила работу. Это потому, что мы сравниваем значение переменной response с 'quit' (response == 'quit'). 'QUIT' НЕ равно 'quit'. | ||
- | Ещё один пример — и мы закончим урок в этом месяце. Предположим, что вы хотите проверить, может ли пользователь работать с вашей программой. Хотя этот пример не является самым лучшим, он хорошо показывает некоторые вещи, которые мы уже знаем. Короче говоря, мы запросим у пользователя его имя и пароль, сравним их с информацией внутри программы и примем решение на основании результатов сравнения. Мы используем два списка: в одном хранятся имена пользователей, в другом — пароли. Затем мы используем команду raw_input для получения информации от пользователя и, наконец, операторы if/elif/else для проверки, может ли пользователь работать. Запомните: это не самый лучший способ. Мы рассмотрим другие способы в последующих уроках. Наш код показан в рамке справа. | + | Ещё один пример — и мы закончим урок в этом месяце. Предположим, что вы хотите проверить, может ли пользователь работать с вашей программой. Хотя этот пример не является самым лучшим, он хорошо показывает некоторые вещи, которые мы уже знаем. Короче говоря, мы запросим у пользователя его имя и пароль, сравним их с информацией внутри программы и примем решение на основании результатов сравнения. Мы используем два списка: в одном хранятся имена пользователей, в другом — пароли. Затем мы используем команду input для получения информации от пользователя и, наконец, операторы if/elif/else для проверки, может ли пользователь работать. Запомните: это не самый лучший способ. Мы рассмотрим другие способы в последующих уроках. Наш код показан в рамке справа. |
Сохраните его как 'password_test.py', запустите и вводите разнообразные значения. | Сохраните его как 'password_test.py', запустите и вводите разнообразные значения. | ||
- | Мы ещё не обсудили одну команду в процедуре проверки, которая начинается с 'if usrname in users:'. Здесь мы проверяем, есть ли введённое имя пользователя в списке. Если да, мы запрашиваем положение имени пользователя в списке users. Затем мы получаем позицию имени пользователя в списке имён, чтобы получить пароль, который хранится в той же позиции в списке паролей. Например, имя John хранится в позиции 1 списка пользователей. Его пароль, 'dog' хранится в позиции 1 списка паролей. Таким образом, мы сопоставляем имя и пароль. Сейчас вам должен быть понятен смысл программы.| | + | Мы ещё не обсудили одну команду в процедуре проверки, которая начинается с 'if usrname in users:'. Здесь мы проверяем, есть ли введённое имя пользователя в списке. Если да, мы запрашиваем положение имени пользователя в списке users. Затем мы получаем позицию имени пользователя в списке имён, чтобы получить пароль, который хранится в той же позиции в списке паролей. Например, имя John хранится в позиции 1 списка пользователей. Его пароль, 'dog' хранится в позиции 1 списка паролей. Таким образом, мы сопоставляем имя и пароль. Сейчас вам должен быть понятен смысл программы. |
Для одного раза достаточно. В следующем месяце мы изучим функции и модули. А пока развлекайтесь с тем, что уже узнали. | Для одного раза достаточно. В следующем месяце мы изучим функции и модули. А пока развлекайтесь с тем, что уже узнали. | ||
+ | =====Код к password_test.py ===== | ||
+ | |||
+ | <code>#!/usr/bin/env python3 | ||
+ | #----------------------------------------------- | ||
+ | #password_test.py | ||
+ | # example of if/else, lists, assignments, input, | ||
+ | # comments and evaluations | ||
+ | #----------------------------------------------- | ||
+ | # Assign the users and passwords | ||
+ | users = ['Fred','John','Steve','Ann','Mary'] | ||
+ | passwords = ['access','dog','12345','kids','qwerty'] | ||
+ | #----------------------------------------------- | ||
+ | # Get username and password | ||
+ | usrname = input('Enter your username => ') | ||
+ | pwd = input('Enter your password => ') | ||
+ | #----------------------------------------------- | ||
+ | # Check to see if user is in the list | ||
+ | if usrname in users: | ||
+ | position = users.index(usrname) #Get the position in the list of the users | ||
+ | if pwd == passwords[position]: #Find the password at position | ||
+ | print ('Hi there, %s. Access granted.' % usrname) | ||
+ | else: | ||
+ | print ('Password incorrect. Access denied.') | ||
+ | else: | ||
+ | print ("Sorry...I don't recognize you. Access denied.") | ||
+ | </code> | ||
--------------------------------------- | --------------------------------------- | ||
Строка 259: | Строка 297: | ||
{{tag>howto Full_Circle}} | {{tag>howto Full_Circle}} | ||
- |