27
К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru Операции с числами 1

операции с числами

  • Upload
    home

  • View
    226

  • Download
    0

Embed Size (px)

Citation preview

Page 1: операции с числами

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Операции с числами

1

Page 2: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Дзен Питона2

•Красивое лучше, чем уродливое.•Явное лучше, чем неявное.•Простое лучше, чем сложное.•Сложное лучше, чем запутанное.•Плоское лучше, чем вложенное.•Разреженное лучше, чем плотное.•Читаемость имеет значение.•Особые случаи не настолько особые, чтобы нарушать правила.•При этом практичность важнее безупречности.•Ошибки никогда не должны замалчиваться.•Если не замалчиваются явно.•Встретив двусмысленность, отбрось искушение угадать.•Должен существовать один — и, желательно, только один — очевидный способ сделать это.•Хотя он поначалу может быть и не очевиден, если вы не голландец.•Сейчас лучше, чем никогда.•Хотя никогда зачастую лучше, чем прямо сейчас.•Если реализацию сложно объяснить — идея плоха.•Если реализацию легко объяснить — идея, возможно, хороша.•Пространства имён — отличная штука! Будем делать их побольше!

Page 3: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Динамическая типизация3

Переменные не надо объявлять!!A = 100 A = 4.5 A = "Привет!"A = [1, 2, 3, 4, 5]A = (1, "Вася", 3)A = {"Вася": 1, "Петя": 23}A = True

print(type(A))<class 'int'>

Page 4: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Динамическая типизация4

Переменные не надо объявлять!!A = 100 # целое intA = 4.5 # вещественное floatA = "Привет!" # строка strA = [1, 2, 3, 4, 5] # список (массив) listA = (1, "Вася", 3) # кортеж tupleA = {"Вася": 1, "Петя": 23} # словарь dictA = True # логический тип boolprint(type(A))<class 'int'>

Page 5: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Имена переменных5

МОЖНО использовать• латинские буквы (A-Z, a-z)

• русские буквы (не рекомендуется!)• цифры

• знак подчеркивания _

заглавные и строчные буквы различаются

имя не может начинаться с цифры

Page 6: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Арифметические выражения6

a = (c + b**5*3 - 1) / 2 * dПриоритет (старшинство):1)скобки2)возведение в степень **3)умножение и деление4)сложение и вычитание

1 23 4 5 6

dbca

2

135

a = (c + b*5*3 - 1) \ / 2 * d

\

перенос на следующую

строку

a = (c + b*5*3 - 1) / 2 * d

перенос внутри скобок разрешён

Page 7: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Деление7

Классическое деление:

a = 9; b = 6x = 3 / 4x = a / bx = -3 / 4x = -a / b

Целочисленное деление:

a = 9; b = 6x = 3 // 4x = a // bx = -3 // 4x = -a // b

Page 8: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Деление8

Классическое деление:

a = 9; b = 6x = 3 / 4 # = 0.75 x = a / b # = 1.5x = -3 / 4 # = -0.75 x = -a / b # = -1.5

Целочисленное деление (округление «вниз»!):

a = 9; b = 6x = 3 // 4 # = 0 x = a // b # = 1x = -3 // 4 # = -1 x = -a // b # = -2

Page 9: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Остаток от деления9

% – остаток от деленияd = 85b = d // 10 # 8 a = d % 10 # 5 d = a % b # 5 d = b % a # 3

Для отрицательных чисел:

a = -7 b = a // 2 # -4 d = a % 2 # 1

Как в математике!!

-7 = (-4)*2 + 1остаток 0

Page 10: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Сокращенная запись операций10

a += b # a = a + b a -= b # a = a - b a *= b # a = a * b a /= b # a = a / ba //= b # a = a // ba %= b # a = a % b

a += 1

увеличение на 1

Page 11: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Стандартные функции11

abs(x) — модуль числаint(x) — преобразование к целому числуround(x) — округление

sqrt(x) — квадратный кореньsin(x) — синус угла, заданного в радианахcos(x) — косинус угла, заданного в радианахexp(x) — экспонента ех

ln(x) — натуральный логарифмfloor(x) — округление «вниз»ceil(x) — округление «вверх»

import mathподключить

математический модуль

x = math.floor(1.6)# 1x = math.ceil(1.6) # 2

x = math.floor(-1.6) #-2x = math.ceil(-1.6) #-1

from math import sin x = sin(0) #0.0from math import *

Page 12: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Генератор случайных чисел12

Генератор на [0,1): X = random(); # псевдослучайное числоY = random() # это уже другое число!

англ. random – случайный

Целые числа на отрезке [a,b]: X = randint(a, b) # псевдослучайное числоY = randint(a, b) # это уже другое число!

import random

Page 13: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Вывод на экран13

a=5b=3print ( a,b)print ( a,b, sep = "")

Протокол: 5 3 53 5 3

print ( a, ‘\n’, b)

print ( “a"*5)

Протокол: aaaaa

Page 14: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Задания14

«B»: Вывести на экран текст «лесенкой» Вася

пошел гулять

«C»: Вывести на экран рисунок из букв Ж ЖЖЖ

ЖЖЖЖЖ ЖЖЖЖЖЖЖ HH HH ZZZZZ

Page 15: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Сложение чисел15

Задача. Ввести с клавиатуры два числа и найти их сумму.

Протокол: Введите два целых числа 25 30 25+30=55

компьютер

пользователь

компьютер считает сам!

1. Как ввести числа в память?2. Где хранить введенные числа?3. Как вычислить?4. Как вывести результат?

?

Page 16: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Ввод значения с клавиатуры16

a = input() ввести строку с клавиатуры и связать с переменной a

b = input()

с = a + b

print ( c )

Протокол: 21 33 2133 Почему??

Результат функции input – строка символов!!

a = int( input() )

b = int( input() )

преобразовать в целое число

Page 17: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Ввод двух значений в одной строке17

a, b = map ( int, input().split() )

input() ввести строку с клавиатуры21 33

input().split() 21 33 разделить строку

на части по пробелам

map ( int, input().split() )21 33

целые применить

эту операцию к каждой части

a, b = map ( int, input().split() )

Page 18: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Ввод с подсказкой18

a = input ( "Введите число: " )подсказкаВведите число: 26

Что не так??a = int( input("Введите число: ") )

Page 19: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Вывод данных19

print ( a ) значение переменной

print ( "Ответ: ", a ) значение и текст

перечисление через запятую

print ( "Ответ: ", a+b ) вычисление выражения

print ( a, "+", b, "=", c )2 + 3 = 5 через пробелы

print ( a, "+", b, "=", c, sep = "" )2+3=5

sep = ""

убрать разделители

Page 20: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Сложение чисел20

a = int ( input() )b = int ( input() )c = a + bprint ( c )

print ( "Введите два числа: " )a = int ( input() )b = int ( input() )c = a + bprint ( a, "+", b, "=", c )

Page 21: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Форматный вывод21

a = 123print ( "{:5d}".format(a) )

5 знаков

1235

a = 123print ( "{:5d}{:5d}{:5d}".format (a, a*a, a*a*a) )

целое

5 знаков

55 знаков

255 знаков

125

Page 22: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Вещественные числа22

Целая и дробная части числа разделяются точкой!

!Форматы вывода:

x = 123.456print( x )print("{:10.2f}".format(x))

123.456

всего знаков

123.46 в дробной части

print("{:10.2g}".format(x))

значащих цифр

1.2e+02 1,2 102

Page 23: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Вещественные числа23

Экспоненциальный формат:

x = 1./30000print("{:e}".format(x))x = 12345678.print("{:e}".format(x))

3.333333e-05

1.234568e+07

3,333333 10–

5

x = 123.456print("{:e}".format(x))print("{:10.2e}".format(x))

1.234560e+02

1.23e+02

1,234568 107

всего знаков в дробной части

Page 24: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Задачи24

«A»: Ввести с клавиатуры три целых числа, найти их сумму, произведение и среднее арифметическое.

Пример:Введите три целых числа:5 7 85+7+8=205*7*8=280(5+7+8)/3=6.667

Page 25: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Задачи25

«C»: Получить случайное трехзначное число и вывести через запятую его отдельные цифры.

Пример:Получено число 123.Его цифры 1, 2, 3.

Page 26: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

26

Конец фильма

ПОЛЯКОВ Константин Юрьевичд.т.н., учитель информатики

ГБОУ СОШ № 163, г. Санкт-Петербург[email protected]

ЕРЕМИН Евгений Александровичк.ф.-м.н., доцент кафедры мультимедийной

дидактики и ИТО ПГГПУ, г. Пермь[email protected]

Page 27: операции с числами

Алгоритмизация и программирование, язык Python, 10 класс

К.Ю. Поляков, Е.А. Ерёмин, 2014 http://kpolyakov.spb.ru

Источники иллюстраций27

1. old-moneta.ru2. www.random.org 3. www.allruletka.ru 4. www.lotterypros.com5. logos.cs.uic.edu 6. ru.wikipedia.org   7. иллюстрации художников издательства «Бином»8. авторские материалы