# Python gives you full control over how your output looks
# Same data — cleaner result

name = "Bull"
age = 25

# Basic print with multiple values
print("Hello", name)         # Hello Bull

# sep — controls what goes between values
# Default is a space
print("Red", "Horn", "Dev", sep="-")   # Red-Horn-Dev
print("Red", "Horn", "Dev", sep="")    # RedHornDev
print("Red", "Horn", "Dev", sep=" | ") # Red | Horn | Dev

# end — controls what goes at the end of a line
# Default is a new line
print("Hello", end=" ")
print("Bull")                # Hello Bull — same line

# f-strings — the cleanest way to mix variables and text
# Put f before the quote, use {} to insert variables
print(f"My name is {name} and I am {age} years old.")
# My name is Bull and I am 25 years old.

# f-strings work with any type
active = True
height = 1.80
print(f"Name: {name} | Age: {age} | Active: {active} | Height: {height}")

# f-strings can format numbers
price = 3.14159
print(f"Price: {price:.2f}")     # Price: 3.14 — 2 decimal places
print(f"Price: {price:.4f}")     # Price: 3.1416 — 4 decimal places

# f-strings vs old style
# You might see .format() in older code — f-strings are cleaner
print("Hello {}".format(name))   # Hello Bull — old way
print(f"Hello {name}")           # Hello Bull — modern way
