Гузариш ба мундариҷа
Мавзӯи 3 аз 18

Арифметика

Дар мавзӯъҳои гузашта мо ҷамъ, тарҳ ва зарб мекардем. Акнун тақсимро дида мебароем — дар барномасозӣ он се навъ мешавад — ва амалҳои дигари фоиданокро.

Се навъи тақсим

print(17 / 5)    # 3.4  — тақсими оддӣ
print(17 // 5)   # 3    — қисми бутун (хориҷи қисмати нопурра)
print(17 % 5)    # 2    — бақияи тақсим
  • / — тақсими оддӣ. Натиҷа ҳамеша касрӣ аст (float): ҳатто 10 / 2 5.0 медиҳад.
  • // — тақсими бутун: тақсимкунанда чанд бор пурра ба тақсимшаванда меғунҷад.
  • % — бақия: пас аз тақсими бутун чӣ боқӣ монд.

Онҳо бо ҳам алоқаманданд: a == (a // b) * b + a % b. Барои 17 ва 5: 3 * 5 + 2 = 17.

Мисол: тухмҳо дар қуттиҳо

Ба як қуттӣ 12 тухм ҷой мегирад. Аз 100 тухм чанд қуттии пурра мешавад ва чанд тухм боқӣ мемонад?

eggs = 100
print(eggs // 12)   # 8 қуттии пурра
print(eggs % 12)    # 4 тухм боқӣ монд

Мисол: рӯзҳо ва ҳафтаҳо

days = 45
weeks = days // 7      # 6
rest = days % 7        # 3
print(weeks, rest)     # 6 3

Рақамҳои адад

Бақияи тақсим ба 10 — рақами охирин аст, тақсими бутун ба 10 бошад рақами охиринро мепартояд:

n = 4096
print(n % 10)      # 6     — рақами охирин
print(n // 10)     # 409   — адад бе рақами охирин
print(n % 100)     # 96    — ду рақами охирин

Бо омезиши // ва % ба ҳар рақам расидан мумкин аст. Кӯшиш кун худат аз 4096 рақами 0-ро гирӣ.

Ҷуфтӣ

Адад ҷуфт аст, агар бақияи тақсим ба 2 ба сифр баробар бошад: n % 2 барои ҷуфтҳо 0 ва барои токҳо 1 медиҳад. Ин дар мавзӯи шартҳо ба кор меояд.

Ададҳои манфӣ

// ба поён (ба сӯи минус беохирӣ) яклухт мекунад, на ба сӯи сифр: -7 // 2 ин -4 аст, -7 % 2 бошад 1. Дар аксари масъалаҳо ададҳо мусбатанд, вале инро дар хотир дор.

Ададҳои касрӣ

Ададҳо бо нуқта — float: 3.14, 0.5, 2.0. Тақсими / ҳамеша float медиҳад.

price = 250
people = 3
print(price / people)    # 83.33333333333333

Ададҳои касрӣ дақиқии маҳдуд доранд: 0.1 + 0.2 0.30000000000000004 медиҳад. Бинобар ин дар масъалаҳо бо ҷавоби касрӣ одатан менависанд «ҷавоб бо хатогии 10-6 қабул мешавад» — фарқҳои хурд дар рақамҳои охирин муҳим нестанд.

Яклухткунӣ:

print(round(3.7))        # 4
print(round(3.14159, 2)) # 3.14 — то ду рақам баъди нуқта
print(int(3.99))         # 3 — int() қисми касриро мепартояд

Дараҷа ва модул

print(3 ** 4)      # 81 — дараҷа
print(2 ** 0.5)    # 1.4142135623730951 — реша тавассути дараҷа
print(abs(-12))    # 12 — модул (масофа то сифр)
print(abs(5 - 9))  # 4  — масофа байни ададҳо

Модули math

Барои функсияҳои математикӣ китобхонаи дохилии math ҳаст. Онро бо фармони import дар аввали барнома пайваст мекунанд:

import math

print(math.sqrt(16))     # 4.0 — решаи квадратӣ
print(math.pi)           # 3.141592653589793
print(math.floor(4.7))   # 4 — яклухткунӣ ба поён
print(math.ceil(4.2))    # 5 — яклухткунӣ ба боло

math.ceil барои яклухткунӣ ба боло қулай аст, вале бо ададҳои хеле калон тавассути тақсими / дақиқиро гум кардан мумкин аст: float тақрибан 15–16 рақами муҳимро нигоҳ медорад. Агар ададҳо дар масъала калон ва бутун бошанд, кӯшиш кун бо амалҳои бутуни // ва % иҷро кунӣ.

Тартиби амалҳо

  1. қавсҳо;
  2. **;
  3. *, /, //, % — аз чап ба рост;
  4. +, - — аз чап ба рост.
print(2 + 3 * 2 ** 2)    # 14: аввал 2**2=4, баъд 3*4=12, баъд 2+12
print(20 // 3 % 4)       # 2: 20//3=6, баъд 6%4=2

Агар шубҳа дошта бошӣ — қавс гузор, онҳо кодро фаҳмотар мекунанд.

Хулоса

  • / — тақсими касрӣ, // — қисми бутун, % — бақия;
  • n % 10 — рақами охирин, n // 10 — адад бе он;
  • ** — дараҷа, abs — модул, round — яклухткунӣ;
  • import math sqrt, floor, ceil, pi-ро мекушояд;
  • барои ададҳои калони бутун // ва %-ро истифода бар, на float.