Текстови стойности¶
В допълнение към целите и реални числа, един от основните типове данни в програмирането е текст. Текстовите данни се наричат низ. В допълнение към буквите те могат да съдържат всички други символи, използвани в текста: препинателни знаци, скоби, числа, математически оператори, различни специални символи като%, $, ^. & т.н.
Текстовите стойности се записват между кавички. Наричаме текста под кавички текст константа или буквален. Единични кавички “…” и двойни “…” могат да се използват еднакво в Python (важно е само кавичките да са от същия тип в началото и в края на низа). Например:
s1 = 'One text'
s2 = "Another text"
Ще използваме думата низ за типа текстови данни, както и за всеки израз, чиято стойност е този тип. Най-важните примери за низови изрази са текстови константи (буквали) и променливи, които съдържат текст.
Извеждане на текст¶
Низовете се извеждат по същия начин като числовите данни. Низът, който искаме да изведем, е просто посочен като аргумент за функция print ().
Когато функцията print () има множество аргументи, тези аргументи могат да бъдат от различни видове:
Когато използваме множество аргументи, ги пишем разделени със запетаи (както при всяка функция). Стойностите на всички посочени аргументи ще бъдатизведени в един и същ ред и ще бъдат разделени с едно интервал.
Повече за извежданите(принтирани) числа¶
Понякога изведеният резултат изглежда нечетлив:
Най-често не се нуждаем от всички тези цифри. Реалните числа могат да изглеждат по-четими, ако използваме функцията за форматиране. С тази функция (освен всичко друго) можем да определим колко цифри след десетичната запетая, която искаме да покажем:
За да определим броя на десетичните знаци за показване, ние нарекохме функцията за формат така: първият аргумент на функцията е стойността, която отпечатваме, а вторият аргумент е описанието на формата за печат. В това описание частта „.2“ означава, че искаме два десетични знака, а частта „f“, съкратено от float, означава, че даваме описание за реално число (видът на реалните числа се нарича float). Функцията връща низ, в който е написано числото x, както е посочено.
Обърнете внимание, че този форматиран печат не променя стойността на променливата x.
Разбихме примера на стъпки, за да го направим по-ясен, въпреки че той може да бъде написан и в един ред код. Например, за да отпечатате с 4 десетични знака:
Когато показваме множество реални числа едно под друго, можем да ги направим по-четими, като подравним десетичните знаци. Например този начин на печат не е лесно разбираем:
За да получим по-четим външен вид, можем да използваме функцията за формат така:
В описанието „8.2f“ числото 8 означава, че текстовата версия на дадения номер трябва да бъде подплатена с ляво разстояние (ако е необходимо), за да заеме общо 8 места. Други части от описанието имат същото значение като преди.
Функцията за формат има и много други функции, но тук няма да ги използваме.
Стринг операции (String operations)¶
Свързване на символни низове (joining strings)¶
Низовете могат да бъдат съединени заедно с операция за свързване на низове. Тази операция се обозначава със знака +, точно както операцията на сумиране, така че в програмирането конкатенацията често неформално се нарича добавяне на низове.
Понякога може да имаме цяло число или истинско число, което да се изтрие в низ, така че е важно да разберем кога знакът се отнася за добавянето на числа и кога свързване на низове. Например в следната програма, първото a + b е добавянето на числа, а второто е добавянето на низове. Съответно, отпечатаните резултати също се различават (изпробвайте).
Има вероятност от време на време да бъдете объркани от резултата при изпълнение на програма. Резултатът може да е различен от очакваното по много причини, а една от възможностите е, че неволно сте добавили низове вместо числа.
Символът + може да стои между два числови израза или между два низа, но не и между низ и число (в произволен ред). Такива комбинации водят до TypeError (опитайте го).
Умножение на низове¶
Strings can also be multiplied. This means that it is allowed to multiply a string by an integer (either from left or right), and the result is a new string, which is obtained by repeating a given string a given number of times.
Низовете също могат да бъдат умножени. Това означава, че е позволено да се умножи низ по цяло число (отляво или отдясно), а резултатът е нов низ, който се получава чрез повтаряне на даден низ определен брой пъти. В следващия пример подчертаваме числата с ред и този ред се получава в резултат на умножаването на низа “-” с 12.
Въпроси и задачи¶
-
Q-9: Свържете *format* функцията с резултатите. Разстоянията са представени с '_' , за да са по-видими
Try again!
- '12.34'
- format(12.34, '.2f')
- '__12.34'
- format(12.34, '7.2f')
- '_12.34'
- format(12.34, '6.2f')
- '__12.3'
- format(12.34, '6.1f')
- '12.3'
- format(12.34, '.1f')
- s = 'a' + "b"
- Try again
- s = 'ab"
- Correct!
- s = 'ab'
- Try again
Q-10: Кое е грешното?
- print('tra' + 2 * '-la')
- print('tra-' + 2 * 'la-')
- print('tra-' + 'la-' + 'la')
- print('tra-' + 'la-la')
- print('tra-la-' + '-la')
Q-11: Кое от следните ще изведе `` tra-la-la ‘’? (Маркирайте всички правилни отговори)
-
Q-12: Свържете изразите с техните стойности
Try again!
- 'NA' * 3
- 'NANANA'
- 'N' + 3 * 'A'
- 'NAAA'
- 'N' * 3 + 'A'
- 'NNNA'
- 'N' * 3 + 3 * 'A'
- 'NNNAAA'
Изразът print((‘N’ + ‘A’) * 2) ще изведе?
Задача - споделяне на печалбата
Тримата приятели се съгласиха да разделят печалбите от съвместното предприятие, така че първият да получи 2/7 от печалбата, вторият 1/3, а третият останалата сума. Общата печалба беше 40000. Завършете програмата, която ще отпечата на два десетични знака приходите на всеки от тримата приятели.