|
| 1 | +from decimal import Decimal, Context |
| 2 | +from fractions import Fraction |
| 3 | +import math |
| 4 | +import random |
| 5 | + |
| 6 | +# Decimal precision example |
| 7 | +ctx = Context(prec=6) |
| 8 | +result = ctx.add(Decimal('1.23456'), Decimal('7.89012')) |
| 9 | +print("Decimal context result:", result) # 9.12468 |
| 10 | + |
| 11 | +# Big integer power |
| 12 | +x = 2 ** 1000 |
| 13 | +print("2 ** 1000 =", x) |
| 14 | + |
| 15 | +# Float division |
| 16 | +result = 1 / 3 |
| 17 | +print("1 / 3 =", result) |
| 18 | + |
| 19 | +# str vs repr vs print |
| 20 | +print("str('chai'):", str('chai')) # 'chai' |
| 21 | +print("repr('chai'):", repr('chai')) # "'chai'" |
| 22 | +print("print('chai'):", end=" "); print('chai') # chai |
| 23 | + |
| 24 | +# Boolean in conditionals |
| 25 | +print("bool([]):", bool([])) # False |
| 26 | +print("bool(-1):", bool(-1)) # True |
| 27 | +print("bool({'name': 'Alice'}):", bool({'name': 'Alice'})) # True |
| 28 | + |
| 29 | +# Comparison operators |
| 30 | +print("1 < 2:", 1 < 2) # True |
| 31 | +print("5.0 == 5.0:", 5.0 == 5.0) # True |
| 32 | +print("4.0 != 5.0:", 4.0 != 5.0) # True |
| 33 | + |
| 34 | +# math.floor() and math.trunc() |
| 35 | +print("math.floor(3.5):", math.floor(3.5)) # 3 |
| 36 | +print("math.floor(-3.5):", math.floor(-3.5)) # -4 |
| 37 | +print("math.trunc(-2.8):", math.trunc(-2.8)) # -2 |
| 38 | +print("math.trunc(2.8):", math.trunc(2.8)) # 2 |
| 39 | + |
| 40 | +# Large integer precision |
| 41 | +print("999999999999999999 + 1 =", 999999999999999999 + 1) # Works fine |
| 42 | + |
| 43 | +# Complex numbers |
| 44 | +print("(2 + 1j) * 3 =", (2 + 1j) * 3) # (6+3j) |
| 45 | + |
| 46 | +# Number bases |
| 47 | +print("0xFF =", 0xFF) # 255 |
| 48 | +print("0b1000 =", 0b1000) # 8 |
| 49 | +print("oct(64) =", oct(64)) # '0o100' |
| 50 | +print("hex(64) =", hex(64)) # '0x40' |
| 51 | +print("bin(64) =", bin(64)) # '0b1000000' |
| 52 | +print("int('64', 16) =", int('64', 16)) # 100 |
| 53 | +print("int('1000', 12) =", int('1000', 12)) # 1728 |
| 54 | + |
| 55 | +# Random module |
| 56 | +print("random.random():", random.random()) # Random float 0–1 |
| 57 | +print("random.randint(1, 100):", random.randint(1, 100)) # Random int |
| 58 | + |
| 59 | +li = ['lemon', 'masala', 'ginger tea'] |
| 60 | +print("random.choice(li):", random.choice(li)) # Random element |
| 61 | +random.shuffle(li) |
| 62 | +print("shuffled li:", li) |
| 63 | + |
| 64 | +# Floating point precision issues |
| 65 | +print("0.1 + 0.1 + 0.4 =", 0.1 + 0.1 + 0.4) # May be 0.6000000000000001 |
| 66 | +print("0.1 + 0.1 + 0.1 =", 0.1 + 0.1 + 0.1) # 0.3 |
| 67 | +print("0.1 + 0.1 + 0.1 + 0.3 =", 0.1 + 0.1 + 0.1 + 0.3) # 0.6 |
| 68 | +print("(0.1 + 0.1 + 0.1) + 0.3 =", (0.1 + 0.1 + 0.1) + 0.3) # 0.6 |
| 69 | + |
| 70 | +# Solving precision issue with Decimal |
| 71 | +print("Decimal('0.1') * 3 =", Decimal('0.1') + Decimal('0.1') + Decimal('0.1')) # 0.3 |
| 72 | + |
| 73 | +# Fractions |
| 74 | +myFr = Fraction(2, 7) |
| 75 | +print("Fraction(2,7) =", myFr) # 2/7 |
| 76 | + |
| 77 | +# Set operations |
| 78 | +setone = {1, 2, 3, 4} |
| 79 | +print("setone & {1,3} =", setone & {1, 3}) # Intersection |
| 80 | +print("setone | {1,3,7} =", setone | {1, 3, 7}) # Union |
| 81 | + |
| 82 | +# Boolean types and comparisons |
| 83 | +print("type(True):", type(True)) # <class 'bool'> |
| 84 | +print("True == 1:", True == 1) # True |
| 85 | +print("False == 0:", False == 0) # True |
| 86 | +print("True is 1:", True is 1) # False (because they’re not the same object) |
| 87 | +print("True + 4 =", True + 4) # 5 |
0 commit comments