Встроенные функции

Язык Python включает много уже определенных, т. е. встроенных в него, функций. Программист не видит их определений, они скрыты где-то в "недрах" языка. Достаточно знать, что эти функции принимают и что возвращают, то есть их интерфейс.

Ряд встроенных функций, касающихся ввода-вывода и типов данных, мы уже использовали. Это print(), input(), int(), float(), str(), bool(), type(). Перечень всех встроенных в Python функций можно найти в официальной документации по языку: https://docs.python.org/3/library/functions.html . В переводе на русский можно посмотреть здесь: https://pythoner.name/documentation/library/functions .

В этом уроке рассмотрим следующие встроенные функции, условно разбив их на группы:

  • функции для работы с символами – ord(), chr(), len()

  • математические функции – abs(), round(), divmod(), pow(), max(), min(), sum()

Функция ord() позволяет получить номер символа по таблице Unicode. Соответственно, принимает она в качестве аргумента одиночный символ, заключенный в кавычки:

>>> ord('z')
122
>>> ord('ф')
1092
>>> ord('@')
64

Функция chr() выполняет обратное действие. Она позволяет получить символ по его номеру:

>>> chr(87)
'W'
>>> chr(1049)
'Й'
>>> chr(10045)
'✽'

Чтобы не путать ord() и chr(), помните, что функция – это действие. Ее имя как бы отвечает на вопрос "Что сделать?". Order – это порядок. Значит, мы хотим получить порядковый номер элемента в ряду. А чтобы получить номер, должны передать символ. Character – это символ. Значит, мы хотим получить символ. Поэтому должны передать порядковый номер.

Функция len() в качестве аргумента принимает объект, который состоит из более простых объектов, количество которых она подсчитывает. Числа – это простые объекты, их нельзя передавать в len(). Строки можно:

>>> len('abc')
3
>>> s1 = '------'
>>> s2 = '_______'
>>> len(s1) > len(s2)
False
>>> len(s1)
6
>>> len(s2)
7

Кроме строк в len() можно передавать другие, еще не изученные нами, структуры данных.

Функция abs() возвращает абсолютное значение числа:

>>> abs(-2.2)
2.2
>>> abs(9)
9

Если требуется округлить вещественное число до определенного знака после запятой, то следует воспользоваться функцией round():

>>> a = 10/3
>>> a
3.3333333333333335
>>> round(a,2)
3.33
>>> round(a)
3

Если второй аргумент не задан, то округление идет до целого числа. Есть одна специфическая особенность этой функции. Второй аргумент может быть отрицательным числом. В этом случае округляться начинают единицы, десятки, сотни и т. д., то есть целая часть:

>>> round(5321, -1)
5320
>>> round(5321, -3)
5000
>>> round(5321, -4)
10000

Функция именно округляет согласно правилу округления из математики, а не отбрасывает. Поэтому 5 тысяч неожиданно округляются до десяти.

>>> round(3.76, 1)
3.8
>>> round(3.72, 1)
3.7
>>> round(3.72)
4
>>> round(3.22)
3

Если нужно просто избавиться от дробной части без округления, следует воспользоваться функцией int():

>>> int(3.78)
3

Нередко функцию round() используют совместно с функцией print(), избегая форматирования вывода:

>>> a = 3.45673
>>> print("Number: %.2f" % a)
Number: 3.46
>>> print("Number:", round(a,2))
Number: 3.46

В последнем случае код выглядит более ясным.

Функция divmod() выполняет одновременно деление нацело и нахождение остатка от деления:

>>> divmod(10, 3)
(3, 1)
>>> divmod(20, 7)
(2, 6)

Возвращает она кортеж, извлечение данных из которого мы пока не изучали. В других языках нередко встречаются две отдельные функции: div() и mod(). Первая делит нацело, вторая находит остаток от целочисленного деления (деления по модулю). В Python и многих других языках для этого используются специальные символы-операнды:

>>> 10 // 3 
3
>>> 10 % 3
1

Функция pow() возводит в степень. Первое число – основание, второе – показатель:

>>> pow(3, 2)
9
>>> pow(2, 4)
16

То же самое можно проделать так:

>>> 3**2
9
>>> 2**4
16

Однако pow() может принимать третий необязательный аргумент. Это число, на которое делится по модулю результат возведения в степень:

>>> pow(2, 4, 4)
0
>>> 2**4 % 4
0

Преимуществом первого способа является его более быстрое выполнение.

Функции max(), min() и sum() находят соответственно максимальный, минимальный элемент и сумму элементов аргумента:

>>> max(10, 12, 3)
12
>>> min(10, 12, 3, 9)
3
>>> a = (10, 12, 3, 10)
>>> sum(a)
35

В sum() нельзя передать перечень элементов, должна быть структура данных, например, кортеж. В min() и max() также чаще передают один так называемый итерируемый объект:

>>> max(a)
12

Практическая работа

  1. Напишите программу, которая циклично запрашивает у пользователя номера символов по таблице Unicode и выводит соответствующие им символы. Завершает работу при вводе нуля.

  2. Напишите программу, которая измеряет длину введенной строки. Если строка длиннее десяти символов, то выносится предупреждение. Если короче, то к строке добавляется столько символов *, чтобы ее длина составляла десять символов, после чего новая строка должна выводиться на экран.

  3. Напишите программу, которая запрашивает у пользователя шесть вещественных чисел. На экран выводит минимальное и максимальное из них, округленные до двух знаков после запятой. Выполните задание без использования встроенных функций min() и max().

Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса.

Комментарии

while 1:
    c = int(input("Please, enter digit: "))
    if c==0: break
    print(chr(c))

Задача номер 2:
n = str (input ("Введите строку: "))
if (len(n) > 10):
    print ("Предупреждение!")
elif (len(n) == 10):
    print ("Всё хорошо!")
else:
    a = 10 - len(n)
    print (n + '*' * a)

к третьей задаче

i=1
a= float(input('enter the real value '))
min=max=a
while i<6:
    b= float(input('enter the real value '))
    if min>b:
        min=b
    if max<b:
        max=b
    i+=1
print ('Maximum ' +str(round(max,2))  + '\n'+ 'Minimum ' + str(round(min,2)))

i = 1
 
while i <= 6:
    a = float(input('Введите число: '))
    if i == 1:
        min = a
        max = a
    else:
        if a < min:
            min = a
        elif a > max:
            max = a
    i += 1    
 
print('Maximum: ', round(max, 2))
print('Minimum: ', round(min, 2))

1.
def cycle():
    sym = int(input("Введите номера символов по таблице Unicode: "))
    while sym > 0:
        print(chr(sym))
        cycle()
    else:
        print("Bye")
        quit()
 
cycle()
2.
def str1():
    w = str(input("Введите 10 букв: "))
    s = (10 - len(w))
    if len(w) > 10:
        print("Warning!!!")
    elif len(w) < 10:
        print(w + (s*'*'))
 
str1()
3.
#шаг
s = 1
#цикл
while s <= 6:
    n = float(input('Введите вещественное число: '))
    if s == 1:
        minn = n
        maxn = n
    else:
        if n < minn: #если следующее значение n меньше предыдущего значения min, min принимает новое значение 
            minn = n 
        elif n > maxn: #аналогично 
            maxn = n
    s += 1    
 
print('max: ', round(maxn, 2))
print('min: ', round(minn, 2))

Ответ на от Radioactive

вместо "введите вещественное число" нужно "введите число". мое решение похоже на предыдущее решение)

string=[]
for k in range(6):
    string.append(float(input()))
minimum=string[0]
maximum=string[0]
for i in range(1,len(string)):
    if minimum > string[i]:
        minimum=string[i]
for j in range(1,len(string)):
    if maximum < string[j]:
        maximum=string[j]
print('Минимальное число: ', round(minimum,2))
print('Максимальное число: ', round(maximum,2))

l = []
num = int(input("Enter a number of digits: "))
for i in range(num):
	digit=int(input("Enter a digit: "))
	l.append(digit)
l.sort() #Функция, которая сортирует список в порядке возрастания
print(l[0]) #Выводим первый элемент (в питоне начинается с нуля отчет)
print(l[-1]) #Выводим последний элемент (-1 это последний элемент)
<python>

Ответ на от Тимур

l = []
num = float(input("Введите число: "))
while len(l) < 6:
    num = float(input("Введите число: "))
    l.append(num)
l.sort() #Функция, которая сортирует список в порядке возрастания
print('Максимум: ', round(l[0], 2)) #Выводим первый элемент (в питоне начинается с нуля отчет)
print('Минимум: ', round(l[-1], 2)) #Выводим последний элемент (-1 это последний элемент)

print("Введите шесть вещественных чисел")
 
chislo_1 = float(input("число №1: "))
chislo_2 = float(input("число №2: "))
chislo_3 = float(input("число №3: "))
chislo_4 = float(input("число №4: "))
chislo_5 = float(input("число №5: "))
chislo_6 = float(input("число №6: "))
 
maxi = chislo_1 
mini = chislo_1
 
if chislo_2 > maxi:
    maxi = chislo_2
if chislo_3 > maxi:
    maxi = chislo_3
if chislo_4 > maxi:
    maxi = chislo_4
if chislo_5 > maxi:
    maxi = chislo_5
if chislo_6 > maxi:
    maxi = chislo_6
 
if chislo_2 < mini:
    mini = chislo_2
if chislo_3 < mini:
    mini = chislo_3
if chislo_4 < mini:
    mini = chislo_4
if chislo_5 < mini:
    mini = chislo_5
if chislo_6 < mini:
    mini = chislo_6
 
print("Максимальное из введенных чисел - %.2f, минимальное - %.2f" % (maxi, mini))

def len_str():
    x = input('>>>  ')
    if len(x) == 10:
        print(x)
    elif len(x) > 10:
        print('CAUTION')
        len_str()
    else:
        y = 10 - len(x)
        print(x + (y * '*'))
 
 
 
len_str()

Всем привет
def uCode():
	while True:
		enter = (input("Insert value: "))
		try:
			enter = int(enter)
			print(chr(enter))
		except ValueError:
			print("FAILED!")
		if enter == 0: break
 
def lengthStr():
	enter = input("Insert string: ")
	print("original string: ", enter)
 
	if len(enter) < 10:
		enter = len(enter)
		print("before", enter)
 
		while enter < 10:
			enter += abs(1)
			print("added", enter)
		print("before", enter)
	else:
		print("This string longer than 10")
 
def realNumber():
	listt = []
	print("Example: 1.002,3.14159265,0.9800001, etc.")
	print("Insert 6 real number: ")
	pos = 0
	while pos < 6:
		try:
			enter = float(input(">: "))
			listt.append(enter)
			listt = sorted(listt)
		except:
			break
		print(len(listt))
		pos += 1
	print(f"min. number: {round(listt[0], 2)}\nmax. number{round(listt[5], 2)}")
 
print("1 - Unicode converter\n2 - length of string\n3 - real number")
enter = int(input(">: "))
if enter == 1:
	uCode()
elif enter == 2:
	lengthStr()
else:
	realNumber()

задание 3 без использования min и max! где-то слышал, что сравнивать эффективнее сначала рядом стоящие, а потом, остальные, не знай этого, даже не представлю что бы я нагородил в коде)))) надеюсь кто-то выложит эффективнее! СТОИТ ОТМЕТИТЬ, ЧТО ИСПОЛЬЗОВАТЬ НУЖНО ТО, ЧТО ПРОШЛИ В МАТЕРИАЛЕ! НЕ ЗАКИДЫВАЙТЕ!
def sru(n1,n2):
    if n1>n2:
        return n1
    elif n1<n2:
        return n2
    else:
        return n1
        print('равны')
def srd(n1,n2):
    if n1>n2:
        return n2
    elif n1<n2:
        return n1
    else:
        return n2
        print('равны')
i = 0
while i !=3:
    a = float(input('введите веществ число'))
    b = float(input('введите веществ число'))
    if i==0:
        d = sru(a,b)
        f = srd(a,b)
    elif i==1:
        d1 = sru(a,b)
        f1 = srd(a,b)
    elif i==2:
        d2 = sru(a,b)
        f2 = srd(a,b)
    i += 1
if i==3:
    c = 0
    while c !=2:
        if c==0:
            k = sru(d,d1)
            t = srd(f,f1)
        elif c==1:
            k1 = sru(k,d2)
            t1 = srd(t,f2)
        c += 1
 
print(round(k1,2),round(t1,2))

# Напишите программу, которая циклично запрашивает у пользователя номера символов
# по таблице Unicode и выводит соответствующие им символы. Завершает работу при вводе нуля.
 
 
a = True
while a != 0:
    try:
        a = int(input('Введите номер символа:'))
        print(chr(a))
    except ValueError:
        print('Что-то пошло не так!')
 
 
# Напишите программу, которая измеряет длину введенной строки. Если строка длиннее
# десяти символов, то выносится предупреждение. Если короче, то к строке добавляется
# столько символов *, чтобы ее длина составляла десять символов, после чего новая
# строка должна выводиться на экран.
 
 
string = input('Введите строку:')
if len(string) > 10:
    print('Строка больше 10-ти символов!')
elif len(string) == 10:
    print(string)
else:
    print(string + (10 - len(string)) * '*')
 
 
# Напишите программу, которая запрашивает у пользователя шесть вещественных
# чисел. На экран выводит минимальное и максимальное из них, округленные до двух
# знаков после запятой. Выполните задание без использования встроенных функций
# min() и max().
 
 
num = float(input('Введите число:'))
minimum = num
maximum = num
i = 1
 
while i < 6:
    num = float(input('Введите число:'))
    if num > maximum:
        maximum = num
    elif num < minimum:
        minimum = num
    i += 1
 
print('Минимальное число: ', round(minimum, 2))
print('Максимальное число: ', round(maximum, 2))

Задача 1:
a = input("Введите номер символа: ")
 
while a != 0:
    try:
        a=int(a)
        print("Символ: ", chr(a))
        a = int(input("Введите номер символа: "))
    except:
        print("Введите целое число")
        a = input("Введите номер символа: ")
else:
    print("Конец")
Задача 2:
stroka = input("Введите что-нибудь: ")
 
if len(stroka) > 10:
    print ("Предупреждение: Строка длинее 10 символов!")
else:
    stroka = stroka + '*'*(10 - len(stroka))
    print(stroka)
Задача 3:
byl = 0
while byl == 0:
    try:
        a = float(input("Введите число №1: "))
        b = float(input("Введите число №2: "))
        c = float(input("Введите число №3: "))
        d = float(input("Введите число №4: "))
        e = float(input("Введите число №5: "))
        f = float(input("Введите число №6: "))
        byl =1
    except:
        print("Ошибка. Введите вещественные числа.")
 
max = a
if max < b:
    max = b
if max < c:
    max = c
if max < d:
    max = d
if max < e:
    max = e
if max < f:
    max = f
 
 
min = a
if min > b:
    min = b
if min > c:
    min = c
if min > d:
    min = d
if min > e:
    min = e
if min > f:
    min = f
 
print("Наиб: ", round(max,2))
print("Наим: ", round(min,2))