- 2.5. Символы и строки¶
- 2.5.1. Символьный тип данных¶
- 2.5.2. Коды символов¶
- 2.5.3. Сравнения символов¶
- 2.5.6. int и т.п.¶
- 2.5.7. Другие операции¶
- 2.5.8. Примеры решения задач¶
- Вывод таблицы символов ASCII на экран
- Pascal
- Язык Си
- Python
- КуМир
- Basic-256
- String.prototype.charCodeAt()
- Сводка
- Синтаксис
- Параметры
- Описание
- Примеры
- Пример: использование метода charCodeAt()
- Пример: исправление метода charCodeAt() для обработки символов не в Базовой многоязыковой плоскости, если их предыдущее присутствие в строке неизвестно
- Как вывести код символа?
- Язык Си в примерах/ASCII-коды символов
- Содержание
- Решение [ править ]
2.5. Символы и строки¶
До сих пор наши программы работали только с числами. Но многим программам надо работать с текстовыми данными. Для этого есть два основных объекта — символы и строки.
2.5.1. Символьный тип данных¶
В питоне, чтобы сохранить символ в переменной, надо просто написать
и т.п. В итоге в переменной ch1 хранится символ a , а в ch2 — символ $ .
Вводить символы можно обычной командой input() :
(именно прямо так), выводить — обычным print :
(На самом деле, в питоне нет отдельного «типа» для символов, символ в питоне — это просто строка длины 1, про строки см. ниже. Но часто удобно думать про символы отдельно от строк.)
2.5.2. Коды символов¶
На самом деле, конечно, в памяти компьютера хранятся не символы (т.е. если мы написали ch=»$» , то нигде в памяти не будет нарисован доллар). Компьютер умеет работать только с числами, и вместо символов он хранит тоже числа.
Есть общепринятая договоренность, которая каждому числу от 0 до 255 ставит в соответствие некоторый символ. Точнее, таких договоренностей есть несколько, они называется кодировки, но для латинских букв, цифр и частоупотребимых символов типа того же доллара, запятой или плюса, во всех кодировках соответствующие числа одинаковы. Для русских букв это не так: в разных кодировках им соответствуют разные числа, но это отдельная тема.
Эта общепринятая сейчас кодировка для латинских букв, цифр и частоупотребимых символов называется ASCII, иногда говорят таблица ASCII. Основная часть этой таблицы выглядит так:
32 | 48 | 0 | 64 | @ | 80 | P | 96 | ` | 112 | p | |
33 | ! | 49 | 1 | 65 | A | 81 | Q | 97 | a | 113 | q |
34 | « | 50 | 2 | 66 | B | 82 | R | 98 | b | 114 | r |
35 | # | 51 | 3 | 67 | C | 83 | S | 99 | c | 115 | s |
36 | $ | 52 | 4 | 68 | D | 84 | T | 100 | d | 116 | t |
37 | % | 53 | 5 | 69 | E | 85 | U | 101 | e | 117 | u |
38 | & | 54 | 6 | 70 | F | 86 | V | 102 | f | 118 | v |
39 | ‘ | 55 | 7 | 71 | G | 87 | W | 103 | g | 119 | w |
40 | ( | 56 | 8 | 72 | H | 88 | X | 104 | h | 120 | x |
41 | ) | 57 | 9 | 73 | I | 89 | Y | 105 | i | 121 | y |
42 | * | 58 | : | 74 | J | 90 | Z | 106 | j | 122 | z |
43 | + | 59 | ; | 75 | K | 91 | [ | 107 | k | 123 | < |
44 | , | 60 | 76 | L | 92 | \ | 108 | l | 124 | | | |
45 | — | 61 | = | 77 | M | 93 | ] | 109 | m | 125 | > |
46 | . | 62 | > | 78 | N | 94 | ^ | 110 | n | 126 | |
47 | / | 63 | ? | 79 | O | 95 | _ | 111 | o | 127 | — |
Здесь символ номер 32 — это пробел.
Символы с номерами от 0 до 31 — это так называемые управляющие символы, они нам пока не очень интересны (равно как и символ 127), поэтому в таблице они не показаны. Символы с кодами больше 128 зависят от кодировки, мы пока это не будем обсуждать. (См. подробнее в разделе про кодировки , но пока вам это не нужно.)
Например, символ доллар имеет номер (говорят код) 36, а символ N — 78.
Обратите внимание, что все цифры идут подряд, все заглавные буквы идут подряд, и все маленькие буквы идут подряд. Это нам будет очень полезно. (Для русских букв это выполняется не всегда.)
Узнать код символа в питоне можно операцией ord, а узнать символ по коду можно операцией chr. Например:
В большинстве случаев точное знание кодов символов вам не надо — вы всегда можете что надо вычислить через ord . Например, если мы знаем, что в переменной ch у нас цифра (т.е. символ, соответствующий цифре) — как в переменную i записать значение этой цифры (т.е. 0, 1, 2, …, или 9)? Т.е. как перевести цифру-символ в число?
Нам поможет то, что все цифры идут подряд. Поэтому достаточно из кода цифры вычесть код нуля:
Обратите внимание: нам не надо знать, что код нуля — 48. Мы прямо пишем ord(‘0’) , а не 48, компьютер сам вычислит код нуля за нас!
2.5.3. Сравнения символов¶
Символы можно сравнивать операторами =, >, =, len(s) :
Далее, строки, конечно, можно считывать и выводить. На питоне это делается стандартными командами: вывод обычным print , а ввод — обычным input() , никакой лишней конвертации не надо, пишете s = input() :
В-третьих, строки можно складывать. Сложить две строки — значит приписать к одной строке другую:
Прибавлять можно и символы:
Наконец, строковые константы — это уже привычные вам последовательности символов в кавычках:
На самом деле, в питоне можно использовать как апострофы (символы ‘ ), так и кавычки (символы » )
Может возникнуть вопрос, как в строковой константе ввести собственно символ апостроф или кавычку. Просто так написать ‘It’s a string’ не получится, т.к.питон подумает, что строка закончилась на втором апострофе; аналогично не сработает «Text»Text» . Поэтому надо приписывать символ \ перед апострофом или кавычкой. Например, чтобы записать в переменную строку It’s a string , надо написать так:
Аналогично для записи символа «апостроф»/»кавычка» в переменную типа char:
Поскольку символ \ имеет такой особый смысл, то чтобы записать в строку прямо этот символ, его надо написать два раза:
получится строка test\test\\test .
Еще частный случай строки — пустая строка, т.е. строка длины ноль:
Ну и наконец, строка — это все-таки массив символов. Можно использовать все известные вам операции над массивами (писать s[i], чтобы получить доступ к i-му символу строки, и т.д.). Например, так можно проверить, есть ли в строке пробелы:
2.5.6. int и т.п.¶
Есть еще три полезных команды:
Они переводят числа в строки и обратно, с int вы уже сталкивались.
2.5.7. Другие операции¶
Вы знаете ряд хитрых команд работы с массивами, и иногда будет возникать желание их использовать при работе со строками. Лучше их не используйте, пока вы точно не будете понимать не только что, но и насколько быстро они работают. В большинстве случаев можно обойтись без них (и так даже будет проще!), плюс вы точно не знаете, как долго они работают.
Аналогично есть другие функции специально для строк, про которые вы можете где-то еще прочитать, например, find . Я не советую их использовать, пока вы не понимаете, как конкретно они работают и насколько долго.
Например, пусть вам надо из строки удалить все пробелы. Можно писать примерно так (считаем, что у вас уже есть исходная строка s ):
Но это работает долго (поверьте мне 🙂 ) и требует от вас помнить все эти команды, а еще и осознавать не самый тривиальный код. Проще так:
Результат лежит в s1 . Поймите, как это работает.
2.5.8. Примеры решения задач¶
Приведу несколько примеров задач, аналогичных тем, которые встречаются на олимпиадах и в моем курсе.
Дан символ. Определите, верно ли, что он является маленькой латинской буквой.
Входные данные: Вводится один символ.
Входные данные: Выведите yes , если это маленькая латинская буква, и no в противном случае.
Пример:
Далее надо проверить, является ли этот символ маленькой латинской буквой. Тут (как и в других аналогичных примерах) нужно воспользоваться тем, что символы в таблице ASCII идут подряд. Поэтому достаточно проверить ‘a’ ch and ch . Итоговый код:
Дана цифра. Считайте ее как символ, и переведите в число (в int ), не пользуясь стандартными функциями типа int .
Входные данные: Вводится один символ — цифра.
Входные данные: Выведите число.
Пример:
Конечно, чтобы чисто пройти все тесты, в этой задаче можно просто вывести то же самое, что и вводится. Но давайте честно научимся превращать цифру в число. Считываем символ:
и дальше надо понять, какая это цифра. Все цифры в таблице ASCII идут подряд, поэтому достаточно из кода символа вычесть код нуля. В итоге получаем
Дана строка. Посчитайте, сколько в ней маленьких латинских букв.
Входные данные: Вводится одна строка.
Входные данные: Выведите одно число — ответ на задачу.
Источник
Вывод таблицы символов ASCII на экран
Вывести на экран коды и символы таблицы ASCII, начиная с символа под номером 32 и заканчивая 127-м включительно. Вывод выполнить в табличной форме: по десять пар «код-символ» в каждой строке.
Для чисел от 32 до 127 выводить их на экран, получать соответствующий им символ из таблицы кодов ASCII и также выводить его на экран.
После каждого 10-го символа переходить на новую строку.
Pascal
таблица ascii паскаль
Язык Си
Python
КуМир
Basic-256
таблица ascii паскаль
var
i: byte;
begin
for i:=32 to 127 do begin
write(i:4,’-‘,chr(i));
if (i-1) mod 10 = 0 then writeln;
end;
writeln;
end.
32- 33-! 34-» 35-# 36-$ 37-% 38-& 39-‘ 40-( 41-)
42-* 43-+ 44-, 45— 46-. 47-/ 48-0 49-1 50-2 51-3
52-4 53-5 54-6 55-7 56-8 57-9 58-: 59-; 60- 63-? 64-@ 65-A 66-B 67-C 68-D 69-E 70-F 71-G
72-H 73-I 74-J 75-K 76-L 77-M 78-N 79-O 80-P 81-Q
82-R 83-S 84-T 85-U 86-V 87-W 88-X 89-Y 90-Z 91-[
92-\ 93-] 94-^ 95-_ 96-` 97-a 98-b 99-c 100-d 101-e
102-f 103-g 104-h 105-i 106-j 107-k 108-l 109-m 110-n 111-o
112-p 113-q 114-r 115-s 116-t 117-u 118-v 119-w 120-x 121-y
122-z 123- < 124-| 125->126-
main() <
short i;
for (i=32;i
таблица ascii python (питон)
for i in range(32,128):
print(«%4d-%s» % (i,chr(i)), end=»)
if i%10 == 0:
print()
Источник
String.prototype.charCodeAt()
Сводка
Метод charCodeAt() возвращает числовое значение Юникода для символа по указанному индексу (за исключением кодовых точек Юникода, больших 0x10000).
Синтаксис
Параметры
Описание
Кодовые точки Юникода простираются в диапазоне от 0 до 1114111 (0x10FFFF). Первые 128 кодовых точек Юникода напрямую отображаются в кодировку ASCII. Информацию по Юникоду смотрите в Руководстве по JavaScript.
Обратите внимание, что метод charCodeAt() всегда возвращает значение, меньшее 65536. Так происходит потому, что большие кодовые точки представляются парой (меньших значений) «суррогатных» псевдо-символов, которые используются для составления настоящего символа. Поэтому для того, чтобы получить полный символ для значений символов от 65536 и выше, необходимо получить не только значение charCodeAt(i) , но также значение charCodeAt(i + 1) (как если бы строка состояла из двух букв). Смотрите второй и третий примеры ниже.
Метод charCodeAt() возвращает NaN , если указанный индекс меньше нуля или больше длины строки.
Обратная совместимость: в более старых версиях (например, в JavaScript 1.2) метод charCodeAt() возвращал число из кодировки ISO-Latin-1 по указанному индексу. Диапазон символов в кодировке ISO-Latin-1 простирается от 0 до 255. Первые 127 чисел напрямую отображаются в кодировку ASCII.
Примеры
Пример: использование метода charCodeAt()
В следующем примере возвращается число 65, значение Unicode для латинского символа «A».
Пример: исправление метода charCodeAt() для обработки символов не в Базовой многоязыковой плоскости, если их предыдущее присутствие в строке неизвестно
Эта версия может использоваться в циклах for, даже когда неизвестно, были ли до указанной позиции символы из не-БМП.
Источник
Как вывести код символа?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вывести код символа
Помогите с помощью scanf и printf, библиотекой stdio.h написать программу: с клавиатуры вводится.
Вывести ascii код символа
На самом деле я немного в ступоре, но почему код выводит число 99, а не 11? #include .
Вывести код введенного пользователем символа
Напишите программу, которая выводит код введенного пользователем символа. Программа должна.
Вывести на экран код и тип символа
С клавиатуры вводится произвольная последовательность символов. Для каждого символа выведите на.
mirso
спасиб, теперь разобрался
Добавлено через 8 минут
Странно. Почему когда я пишу (char)(i), пишется непонятный символ,
а когда (char)(65), ну и любого другого числа то выводится все по кодировке?
Вывести ASCII–код символа в десятичном, восьмеричном и шестнадцатеричном виде
Здравствуйте. Помогите пожалуйста с лабораторной. В языке С++ полный ноль, ничего не понимаю.
Как определить код символа ?
Ввести любой латинский строчный символ с клавиатуры. Вывести его порядковый и соответствующий.
Как получить бинарный код символа?
Я читаю txt в котором разные символы(без русских) типа такого 45h8giJDFJH Я должен прочитать их.
Как определить двоичный код символа.
Как определить двоичный код символа? Нашёл тему и исходный код программы, но мне нужно понять.
Источник
Язык Си в примерах/ASCII-коды символов
Содержание
Решение [ править ]
Главный цикл этой программы напоминает таковой для рассмотренной в разделе Максимум; в частности, мы вновь используем цикл «пока» ( while ). [1] Однако, вместо scanf для чтения чисел, здесь мы обращаемся к функции getchar для чтения отдельных знаков (кодов.) [2] Мы по-прежнему используем printf — для вывода кода символа в десятичной записи. [3]
С другой стороны, из условия корректности ввода исключается требование возврата именно EOF (как признака исчерпания входного потока), поскольку это условие уже является условием завершения главного цикла. Это различие связано с тем, что в данной программе не требуется опозновать «подходящий» ввод — допустимой является совершенно любая последовательность символов (кодов.) Напротив, в предыдущей программе мы принимали исключительно целые числа в десятичной записи.
Требование ложности значения функции признака ошибки ferror для стандартного ввода ( stdin ) по завершении главного цикла остается в силе. [4]
Подчеркнем, что диапазон возвращаемых функцией getchar значений — это диапазон «символьного» типа char плюс одно значение, а именно — признак конца потока EOF . [2] Как следствие, иногда встречаемое в примерах кода чтение символа из потока непосредственно в переменную типа char не вполне корректно — для этих целей следует всегда использовать переменную типа int .
Обратите внимание, что сформировать условие «конец потока» при вводе с клавиатуры можно вводом (в зависимости от системы и предполагая настройки по-умолчанию) Control-d или Control-z (также обозначаются C-d , ^D , C-z , ^Z .)
Источник