[#] Циклы
vit01(mira, 1) — All
2015-12-04 04:13:29


В Python v.3 для строк используется кодировка Unicode. (Следует помнить, что в
Python, в отличие от других языков программирования, вообще нет такого типа
как одиночный символ; любой символ это строка, длина которой равна 1.)
Первые 128 символов по таблице Unicode такие же как и в таблице символов
ASCII. Выведим их (начиная с пробела - 32-й символ). Чтобы привести вывод к
табличной форме будем переходить на новую строку после каждого десятого
символа (инструкция if в коде ниже).
Функция chr() возвращает символ из таблицы Unicode, соответствующий
переданному коду-числу.
    for i in range(32,128):
    	print(chr(i), end=' ')
    	if (i-2) % 10 == 0:
    		print()
    print()
Результат выполнения кода:
      ! " # $ % & ' ( ) * 
    + , - . / 0 1 2 3 4 
    5 6 7 8 9 : ; < = > 
    ? @ A B C D E F G H 
    I J K L M N O P Q R 
    S T U V W X Y Z [ \ 
    ] ^ _ ` a b c d e f 
    g h i j k l m n o p 
    q r s t u v w x y z 
    { | } ~  
Но допустим, нам захотелось или потребовалось узнать коды символов русских
букв (кирилицы). Таблица Unicode очень большая и включает почти все алфавиты
Земли. Однако предположим, что кирилица должна быть закодирована где-то в
начале таблицы (ведь русский - один из распространенных языков мира).
Переберем коды символов от 256 до 10000), и если какой-либо код из этого
диапазона соответствует русской букве (прописной или строчной), то выведем на
экран сам код и букву, которой он соответствует.
    for i in range(256,10000):
    	if 'а'<=chr(i)<='я' or 'А'<=chr(i)<='Я':
    		print(i,'-', chr(i))
Результат выполнения кода:
    1040 - А
    1041 - Б
    1042 - В
    1043 - Г
    1044 - Д
    1045 - Е
    1046 - Ж
    1047 - З
    1048 - И
    1049 - Й
    1050 - К
    1051 - Л
    1052 - М
    1053 - Н
    1054 - О
    1055 - П
    1056 - Р
    1057 - С
    1058 - Т
    1059 - У
    1060 - Ф
    1061 - Х
    1062 - Ц
    1063 - Ч
    1064 - Ш
    1065 - Щ
    1066 - Ъ
    1067 - Ы
    1068 - Ь
    1069 - Э
    1070 - Ю
    1071 - Я
    1072 - а
    1073 - б
    1074 - в
    1075 - г
    1076 - д
    1077 - е
    1078 - ж
    1079 - з
    1080 - и
    1081 - й
    1082 - к
    1083 - л
    1084 - м
    1085 - н
    1086 - о
    1087 - п
    1088 - р
    1089 - с
    1090 - т
    1091 - у
    1092 - ф
    1093 - х
    1094 - ц
    1095 - ч
    1096 - ш
    1097 - щ
    1098 - ъ
    1099 - ы
    1100 - ь
    1101 - э
    1102 - ю
    1103 - я
Теперь мы знаем коды русских букв по таблице Unicode. Но вывод получился
какой-то некомпактный. К тому же мы видим, что буквы алфавита идут одна за
другой. Поэтому достаточно сначала узнать только код первой большой буквы
алфавита (прописные символы идут всегда впереди строчных) и код последней
маленькой буквы алфавита. Кроме того, если мы нашли коды символов, то незачем
далее продолжать цикл. Поэтому перепишем программу следующим образом:
    first = 0
    last = 0
    for i in range(255,10000):
    	if chr(i) == 'А':
    		first = i
    	elif chr(i) == 'я':
    		last = i
    		break # выход из цикла
    j = 0		
    for i in range(first,last+1):
    	print(i,'-', chr(i), end=' ')
    	j += 1
    	if j%10 == 0: print()
    print()
Результат выполнения кода:
    1040 - А 1041 - Б 1042 - В 1043 - Г 1044 - Д 1045 - Е 1046 - Ж 1047 - З 1048 - И 1049 - Й 
    1050 - К 1051 - Л 1052 - М 1053 - Н 1054 - О 1055 - П 1056 - Р 1057 - С 1058 - Т 1059 - У 
    1060 - Ф 1061 - Х 1062 - Ц 1063 - Ч 1064 - Ш 1065 - Щ 1066 - Ъ 1067 - Ы 1068 - Ь 1069 - Э 
    1070 - Ю 1071 - Я 1072 - а 1073 - б 1074 - в 1075 - г 1076 - д 1077 - е 1078 - ж 1079 - з 
    1080 - и 1081 - й 1082 - к 1083 - л 1084 - м 1085 - н 1086 - о 1087 - п 1088 - р 1089 - с 
    1090 - т 1091 - у 1092 - ф 1093 - х 1094 - ц 1095 - ч 1096 - ш 1097 - щ 1098 - ъ 1099 - ы 
    1100 - ь 1101 - э 1102 - ю 1103 - я