HOW-TO: Программа на Python, Часть 2 Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
fullcircle:28:python_ч_2 [2012/05/02 15:24]
[Оператор while]
fullcircle:28:python_ч_2 [2018/01/08 20:54] (текущий)
[Подстановка переменных]
Строка 20: Строка 20:
   - [[..:​40:​python_ч_14|Программа на Python — часть 14]]   - [[..:​40:​python_ч_14|Программа на Python — часть 14]]
  
-Впрошлом уроке мы рассмотрели простую программу,​ которая использовала ​raw_input ​для получения ответа пользователя,​ простые типы переменных и простой цикл "​for"​. В этом уроке мы рассмотрим ещё больше типов переменных и напишем ещё больше программ.+В прошлом уроке мы рассмотрели простую программу,​ которая использовала ​input для получения ответа пользователя,​ простые типы переменных и простой цикл "​for"​. В этом уроке мы рассмотрим ещё больше типов переменных и напишем ещё больше программ.
  
 =====Списки===== =====Списки=====
Строка 30: Строка 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.
Строка 53: Строка 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'​.
Строка 63: Строка 63:
 Чтобы найти длину строки используем функцию len(): Чтобы найти длину строки используем функцию len():
 <​code>​ <​code>​
-print len(strng)+print (len(strng))
 </​code>​ </​code>​
 Результатом будет 17. Если мы хотим найти, где в строке находится слово '​time',​ то набираем Результатом будет 17. Если мы хотим найти, где в строке находится слово '​time',​ то набираем
Строка 77: Строка 77:
 При помощи команды split можно получить отдельные слова в строке. Разделим строку по пробелам командой:​ При помощи команды split можно получить отдельные слова в строке. Разделим строку по пробелам командой:​
 <​code>​ <​code>​
-print strng.split('​ ')+print (strng.split('​ '))
 </​code>​ </​code>​
 которая вернёт список,​ состоящий из ['​The',​ '​time',​ '​has',​ '​come'​]. Это очень мощная команда. Есть и другие операции над строками,​ которые мы рассмотрим позже. которая вернёт список,​ состоящий из ['​The',​ '​time',​ '​has',​ '​come'​]. Это очень мощная команда. Есть и другие операции над строками,​ которые мы рассмотрим позже.
Строка 85: Строка 85:
 Есть ещё одна вещь, о которой я хочу рассказать до того, как мы перейдём к следующей программе-примеру. Если мы хотим напечатать строку,​ включающую текст и переменную,​ можно использовать подстановку переменных. Это просто. Если мы хотим подставить строку,​ мы пишем '​%s'​ и затем говорим Python, что надо подставить. Например,​ чтобы напечатать название месяца из нашего списка,​ можно использовать:​ Есть ещё одна вещь, о которой я хочу рассказать до того, как мы перейдём к следующей программе-примеру. Если мы хотим напечатать строку,​ включающую текст и переменную,​ можно использовать подстановку переменных. Это просто. Если мы хотим подставить строку,​ мы пишем '​%s'​ и затем говорим Python, что надо подставить. Например,​ чтобы напечатать название месяца из нашего списка,​ можно использовать:​
 <​code>​ <​code>​
-print 'Month = %s' % months[0]+print ('Month = %s' % months[0])
 </​code>​ </​code>​
 Эта команда выведет 'Month = Jan'. Если хотите подставить целое число, используйте '​%d'​. Рассмотрим пример ниже: Эта команда выведет 'Month = Jan'. Если хотите подставить целое число, используйте '​%d'​. Рассмотрим пример ниже:
Строка 92: Строка 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>​
 Вывод этой программы:​ Вывод этой программы:​
Строка 151: Строка 151:
 Далее, мы должны обсудить комментарии. Комментарии важны по нескольким причинам. Они не только говорят вам или другим людям, что вы пытаетесь делать,​ но и напомнят вам через полгода,​ что же вы хотели сделать. Когда вы будете писать много программ,​ комментарии станут важными. Также при их помощи вы заставите Python игнорировать какие-либо части кода. Чтобы закомментировать строку,​ поставьте перед ней знак '#'​. Например:​ Далее, мы должны обсудить комментарии. Комментарии важны по нескольким причинам. Они не только говорят вам или другим людям, что вы пытаетесь делать,​ но и напомнят вам через полгода,​ что же вы хотели сделать. Когда вы будете писать много программ,​ комментарии станут важными. Также при их помощи вы заставите Python игнорировать какие-либо части кода. Чтобы закомментировать строку,​ поставьте перед ней знак '#'​. Например:​
  
-<​code>#</​code>​ Это комментарий+<​code>#</​code>​ Это ​комментарий.
  
 Комментарии можно вставлять в любое место в строке,​ но помните,​ что Python проигнорирует всё, что идёт после '#'​. Комментарии можно вставлять в любое место в строке,​ но помните,​ что Python проигнорирует всё, что идёт после '#'​.
Строка 184: Строка 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. Другие часто используемые операторы сравнения:​ больше чем '>',​ меньше,​ чем или равно '​%%<​=%%',​ больше чем или равно '>​='​ и не равно '​!='​.
Строка 200: Строка 200:
 loop = 1 loop = 1
 while loop <= 10: while loop <= 10:
- print loop+ print ​(loop)
  loop = loop + 1  loop = loop + 1
 </​code>​ </​code>​
Строка 223: Строка 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 строк.
  
 Если мы запустим этот пример,​ то увидим:​ Если мы запустим этот пример,​ то увидим:​
Строка 253: Строка 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 списка паролей. Таким образом,​ мы сопоставляем имя и пароль. Сейчас вам должен быть понятен смысл программы.
 +
 Для одного раза достаточно. В следующем месяце мы изучим функции и модули. А пока развлекайтесь с тем, что уже узнали. Для одного раза достаточно. В следующем месяце мы изучим функции и модули. А пока развлекайтесь с тем, что уже узнали.
  
Строка 263: Строка 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
 #​----------------------------------------------- #​-----------------------------------------------
Строка 273: Строка 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
Строка 280: Строка 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>​
 --------------------------------------- ---------------------------------------