
print("Hello Python World!")
print('"Hello" Python World!', 99, "is the count", sep="**", end="")
print("next")

x = "123"
print(x)
print(type(x))
print(x + str(99))
print(int(x) + 99)

x = 99
print(x)
print(type(x))

x = 12.34
print(x)
print(type(x)) #  IEEE 754, 64bit E+-308

x = 1000000000
print(x)
x = x * x * x * x * x * x * x * x * x
print(x)  #  int type has "unbounded" range

# x = 1000000000
# x = x ** x  #  Takes WAY too long!!!

print("hello again")

x = 99
print(f" the value is {x + 3}")

print(3 < 4)
print(type(3 < 4))

print(bool(99))

x = 10
y = 10
print(x == y)
print(x != y)

x = "Hello"
# y = "He"
# y += "llo"
y = "Hello"
print(x)
print(y)
print(x == y)  #  __eq__ method "dunder" method i.e. "double underscore"
print(x is y)

x = None
print(x)
print(type(x))

z = None
print("z is", z)
del z
# print("z is", z)  #  can't do this any more!

print(3 / 4)  #  / is floating point!!!
print(3 // 4)  #  // is int type division

print(-7 % 3)  #  % is MODULUS, not REMAINDER (differ with negative numbers)
