Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
fullcircle:28:python_ч_2 [2010/10/08 00:37] |
fullcircle:28:python_ч_2 [2018/01/08 20:53] [Больше о строках] |
||
---|---|---|---|
Строка 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. | ||
Строка 49: | Строка 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'. | ||
Строка 59: | Строка 63: | ||
Чтобы найти длину строки используем функцию len(): | Чтобы найти длину строки используем функцию len(): | ||
<code> | <code> | ||
- | print len(strng) | + | print (len(strng)) |
</code> | </code> | ||
Результатом будет 17. Если мы хотим найти, где в строке находится слово 'time', то набираем | Результатом будет 17. Если мы хотим найти, где в строке находится слово 'time', то набираем | ||
Строка 73: | Строка 77: | ||
При помощи команды split можно получить отдельные слова в строке. Разделим строку по пробелам командой: | При помощи команды split можно получить отдельные слова в строке. Разделим строку по пробелам командой: | ||
<code> | <code> | ||
- | print strng.split(' ') | + | print (strng.split(' ')) |
</code> | </code> | ||
которая вернёт список, состоящий из ['The', 'time', 'has', 'come']. Это очень мощная команда. Есть и другие операции над строками, которые мы рассмотрим позже. | которая вернёт список, состоящий из ['The', 'time', 'has', 'come']. Это очень мощная команда. Есть и другие операции над строками, которые мы рассмотрим позже. | ||
Строка 81: | Строка 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'. Рассмотрим пример ниже: | ||
Строка 88: | Строка 92: | ||
DaysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31] | 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],DaysInMonth[cntr]) | + | print ('%s has %d days.' % (Months[cntr],DaysInMonth[cntr])) |
</code> | </code> | ||
Вывод этой программы: | Вывод этой программы: | ||
Строка 147: | Строка 151: | ||
Далее, мы должны обсудить комментарии. Комментарии важны по нескольким причинам. Они не только говорят вам или другим людям, что вы пытаетесь делать, но и напомнят вам через полгода, что же вы хотели сделать. Когда вы будете писать много программ, комментарии станут важными. Также при их помощи вы заставите Python игнорировать какие-либо части кода. Чтобы закомментировать строку, поставьте перед ней знак '#'. Например: | Далее, мы должны обсудить комментарии. Комментарии важны по нескольким причинам. Они не только говорят вам или другим людям, что вы пытаетесь делать, но и напомнят вам через полгода, что же вы хотели сделать. Когда вы будете писать много программ, комментарии станут важными. Также при их помощи вы заставите Python игнорировать какие-либо части кода. Чтобы закомментировать строку, поставьте перед ней знак '#'. Например: | ||
- | <code>#</code> Это комментарий | + | <code>#</code> Это - комментарий. |
Комментарии можно вставлять в любое место в строке, но помните, что Python проигнорирует всё, что идёт после '#'. | Комментарии можно вставлять в любое место в строке, но помните, что Python проигнорирует всё, что идёт после '#'. | ||
Строка 180: | Строка 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. Другие часто используемые операторы сравнения: больше чем '>', меньше, чем или равно '%%<=%%', больше чем или равно '>=' и не равно '!='. | ||
Строка 192: | Строка 196: | ||
=====Оператор 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> | ||
Строка 219: | Строка 223: | ||
loop = 1 | loop = 1 | ||
while loop == 1: | while loop == 1: | ||
- | response = raw_input("Enter something or 'quit' to end => ") | + | response = input("Enter something or 'quit' to end => ") |
if response == 'quit': | if response == 'quit': | ||
- | print 'quitting' | + | print ('quitting') |
loop = 0 | loop = 0 | ||
else: | else: | ||
- | print 'You typed %s' % response | + | print ('You typed %s' % response) |
</code> | </code> | ||
- | В этом примере, мы рассматриваем всё вместе: оператор if, цикл while, команду raw_input, последовательность для новой строки, операторы присваивания и сравнения — всё это в программе из 8 строк. | + | В этом примере, мы рассматриваем всё вместе: оператор if, цикл while, команду input, последовательность для новой строки, операторы присваивания и сравнения — всё это в программе из 8 строк. |
Если мы запустим этот пример, то увидим: | Если мы запустим этот пример, то увидим: | ||
Строка 249: | Строка 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 списка паролей. Таким образом, мы сопоставляем имя и пароль. Сейчас вам должен быть понятен смысл программы. |
Для одного раза достаточно. В следующем месяце мы изучим функции и модули. А пока развлекайтесь с тем, что уже узнали. | Для одного раза достаточно. В следующем месяце мы изучим функции и модули. А пока развлекайтесь с тем, что уже узнали. | ||
Строка 259: | Строка 264: | ||
=====Код к password_test.py ===== | =====Код к password_test.py ===== | ||
- | <code>#----------------------------------------------- | + | <code>#!/usr/bin/env python3 |
+ | #----------------------------------------------- | ||
#password_test.py | #password_test.py | ||
- | # example of if/else, lists, assignments,raw_input, | + | # example of if/else, lists, assignments, input, |
# comments and evaluations | # comments and evaluations | ||
#----------------------------------------------- | #----------------------------------------------- | ||
Строка 269: | Строка 275: | ||
#----------------------------------------------- | #----------------------------------------------- | ||
# Get username and password | # Get username and password | ||
- | usrname = raw_input('Enter your username => ') | + | usrname = input('Enter your username => ') |
- | pwd = raw_input('Enter your password => ') | + | pwd = input('Enter your password => ') |
#----------------------------------------------- | #----------------------------------------------- | ||
# Check to see if user is in the list | # Check to see if user is in the list | ||
Строка 276: | Строка 282: | ||
position = users.index(usrname) #Get the position in the list of the users | position = users.index(usrname) #Get the position in the list of the users | ||
if pwd == passwords[position]: #Find the password at position | if pwd == passwords[position]: #Find the password at position | ||
- | print 'Hi there, %s. Access granted.' % usrname | + | print ('Hi there, %s. Access granted.' % usrname) |
else: | else: | ||
- | print 'Password incorrect. Access denied.' | + | print ('Password incorrect. Access denied.') |
else: | else: | ||
- | print "Sorry...I don't recognize you. Access denied." | + | print ("Sorry...I don't recognize you. Access denied.") |
</code> | </code> | ||
--------------------------------------- | --------------------------------------- |