In Python, data types define the type of data that can be stored in variables. Here are the main data types in Python:

1. Numeric Types:

  • int: Integer values (e.g., 5, -3, 1000)
  • float: Floating-point values (e.g., 3.14, -0.001, 2.0)

2. Sequence Types:

  • str: Strings, sequences of characters (e.g., “hello”, ‘Python’, “123”)
  • list: Ordered, mutable collections of items (e.g., [1, 2, 3], [‘a’, ‘b’, ‘c’])
  • tuple: Ordered, immutable collections of items (e.g., (1, 2, 3), (‘a’, ‘b’, ‘c’))

3. Mapping Type:

  • dict: Unordered collections of key-value pairs (e.g., {‘name’: ‘John’, ‘age’: 30})

4. Set Types:

  • set: Unordered collections of unique items (e.g., {1, 2, 3}, {‘a’, ‘b’, ‘c’})
  • frozenset: Immutable set (similar to set but cannot be changed after creation)

5. Boolean Type:

  • bool: Represents truth values, either True or False.

6. None Type:

  • None: Represents the absence of a value or a null value.

Additional Types:

  • bytes: Immutable sequence of bytes (e.g., b’hello’)
  • bytearray: Mutable sequence of bytes (similar to bytes but can be modified)
  • memoryview: Memory view objects used to expose the buffer interface to Python code.
  • complex: Complex numbers with a real and imaginary part (e.g., 3 + 4j)

Python is dynamically typed, meaning you don’t need to explicitly declare the data type of a variable. The interpreter automatically assigns data types based on the value assigned to the variable. Additionally, Python supports type conversion functions to convert between different data types (e.g., int(), float(), str()).

Understanding these data types is crucial for effectively working with data and writing Python programs. Each data type has its own set of operations and methods for manipulation and processing.

Type casting in Python

Type casting in Python refers to converting a value from one data type to another. Python provides built-in functions for explicit type conversion. Here are the commonly used type casting functions:

1. int():

Converts a value to an integer data type.

x = int("10")  # x will be 10

2. float():

Converts a value to a floating-point data type.

y = float("3.14")  # y will be 3.14

3. str():

Converts a value to a string data type.

z = str(42)  # z will be "42"

4. bool():

Converts a value to a boolean data type.

a = bool(0)  # a will be False
b = bool(1) # b will be True

5. list(), tuple(), set(), dict():

Converts a sequence or mapping type to the respective data type.

seq = [1, 2, 3]
seq_tuple = tuple(seq) # seq_tuple will be (1, 2, 3)
seq_set = set(seq) # seq_set will be {1, 2, 3}

6. bytes(), bytearray():

Converts a value to a bytes or bytearray data type.

b = bytes("hello", 'utf-8')  # b will be b'hello'
ba = bytearray(b) # ba will be bytearray(b'hello')

7. complex():

Converts a value to a complex number.

c = complex(2, 3)  # c will be 2 + 3j

Note:

  • Type casting may result in loss of precision or data if the conversion is not possible.
  • It’s essential to ensure that the value being casted can be validly converted to the target data type to avoid errors.
  • Some implicit type conversions may also occur in Python, especially in arithmetic operations, where Python will automatically convert operands to a common data type before performing the operation.

print() function in Python

The print() function in Python is used to output data to the standard output (usually the console). It is one of the most commonly used functions and is quite versatile. Let’s explore it in detail with examples and best use cases.

print(*objectssep=’ ‘end=’n’file=Noneflush=False)

Print objects to the text stream file, separated by sep and followed by endsependfile, and flush, if present, must be given as keyword arguments.

The print function in Python is a versatile tool that can be customized using several optional parameters. The default signature of the print function is:

print(*objects, sep=' ', end='n', file=None, flush=False)

Here’s a detailed breakdown of each parameter and how you can use them:

  1. *objects:
    • This parameter allows you to print multiple objects. Each object can be of any type (e.g., string, integer, list).
    • The * indicates that this parameter can accept a variable number of arguments.
  2. sep:
    • This parameter specifies the separator between the objects.
    • The default value is a single space (' ').
    • Example: print("Hello", "world", sep=", ") will output Hello, world.
  3. end:
    • This parameter specifies what to print at the end of the output.
    • The default value is a newline character ('n'), which means each print call ends with a newline.
    • Example: print("Hello", end="!") will output Hello! without a newline.
  4. file:
    • This parameter specifies the file to which the output should be written.
    • The default value is None, which means output is written to sys.stdout (the console).
    • Example: print("Hello, world", file=sys.stderr) will print the message to the standard error stream instead of the standard output.
  5. flush:
    • This parameter specifies whether to forcibly flush the stream.
    • The default value is False.
    • When set to True, it forces the output to be flushed immediately.
    • Example: print("Hello, world", flush=True) will ensure that the output is flushed immediately to the console or file.

Examples

Here are some examples demonstrating the use of these parameters:

Multiple Objects with Custom Separator:

print("apple", "banana", "cherry", sep=", ")

Output:apple, banana, cherry

Custom End Character:

print("Hello", end=" ") print("world") Output:Copy codeHello world

Printing to a File:

with open("output.txt", "w") as f:
    print("Hello, file", file=f)

This will write Hello, file to output.txt.

Flushing the Output:

import time
print("Loading", end="", flush=True)
for i in range(3):
    time.sleep(1)
    print(".", end="", flush=True)
This will immediately print each dot after a 1-second delay, simulating a loading indicator.

The print function in Python is highly configurable, allowing you to customize the output format, destination, and behavior. By understanding and utilizing these parameters, you can control how your program’s output is displayed or logged.

Formatting Strings

Python 3.6+ provides formatted string literals (f-strings) for more complex formatting:

name = "Alice"
age = 30
print(f"Name: {name}, Age: {age}")

Here are some interesting examples using the print() function in Python to demonstrate its versatility and power.

1. Printing with Custom Separator and End

This example prints a list of items with a custom separator and ends the line with an exclamation mark.

items = ["apple", "banana", "cherry"]
print("Items:", *items, sep=", ", end="!n")

Output:

Items: apple, banana, cherry!

2. Creating a Loading Bar

This example uses print() to create a loading bar that updates in place.

import time

print("Loading:", end="")
for i in range(10):
    print("#", end="", flush=True)
    time.sleep(0.2)
print(" Done!")

Output:

Loading:########## Done!

3. Printing to a File

This example demonstrates how to redirect the output of print() to a file.

with open("output.txt", "w") as f:
    print("Hello, file!", file=f)

# To verify, read and print the content of the file
with open("output.txt", "r") as f:
    print(f.read())

Output in the file:

Hello, file!

4. Pretty Printing a Dictionary

This example shows how to print a dictionary in a more readable format.

data = {
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "skills": ["Python", "Data Science", "Machine Learning"]
}

for key, value in data.items():
    print(f"{key}: {value}")

Output:

name: Alice
age: 30
city: New York
skills: ['Python', 'Data Science', 'Machine Learning']

5. Printing with Different Colors (Using ANSI Codes)

This example prints text in different colors using ANSI escape codes.

print("33[91m" + "This is red text" + "33[0m")
print("33[92m" + "This is green text" + "33[0m")
print("33[93m" + "This is yellow text" + "33[0m")
print("33[94m" + "This is blue text" + "33[0m")
print("33[95m" + "This is magenta text" + "33[0m")
print("33[96m" + "This is cyan text" + "33[0m")

Output:

(This output will show in different colors if your terminal supports ANSI escape codes)

6. Aligning Text with format()

This example aligns text using the format() function.

print("{:<10} {:<10} {:<10}".format("Name", "Age", "City"))
print("{:<10} {:<10} {:<10}".format("Alice", 30, "New York"))
print("{:<10} {:<10} {:<10}".format("Bob", 25, "Los Angeles"))
print("{:<10} {:<10} {:<10}".format("Charlie", 35, "Chicago"))

Output:

Name       Age        City      
Alice      30         New York  
Bob        25         Los Angeles
Charlie    35         Chicago   

7. Printing a Table

This example prints a table with headers and rows.

data = [
    {"Name": "Alice", "Age": 30, "City": "New York"},
    {"Name": "Bob", "Age": 25, "City": "Los Angeles"},
    {"Name": "Charlie", "Age": 35, "City": "Chicago"}
]

header = "{:<10} {:<10} {:<15}".format("Name", "Age", "City")
print(header)
print("-" * len(header))
for row in data:
    print("{:<10} {:<10} {:<15}".format(row["Name"], row["Age"], row["City"]))

Output:

Name       Age        City           
------------------------------------
Alice 30 New York
Bob 25 Los Angeles
Charlie 35 Chicago

8. Creating a Simple Progress Bar

This example shows how to create a simple progress bar that updates in place.

import time
import sys

def progress_bar(iterable, total, prefix='', suffix='', length=50, fill='█'):
    for i, item in enumerate(iterable):
        percent = ("{0:.1f}").format(100 * (i / float(total)))
        filled_length = int(length * i // total)
        bar = fill * filled_length + '-' * (length - filled_length)
        print(f'r{prefix} |{bar}| {percent}% {suffix}', end='r')
        yield item
    print()

# Example usage
for _ in progress_bar(range(20), total=20, prefix='Progress:', suffix='Complete', length=50):
    time.sleep(0.1)

Output:

luaCopy codeProgress: |█████████████████████████---------------------| 50.0% Complete
(This output will show a progressing bar if run in a terminal)

These examples demonstrate various ways to use the print() function creatively and effectively to manage output formatting, user feedback, file handling, and more.

Complex Examples:

Table Formatting

Let’s create a more complex example where we format data in a tabular form. We’ll use the str.format() method for this example.

data = [
    {"Name": "Alice", "Age": 30, "Occupation": "Engineer"},
    {"Name": "Bob", "Age": 24, "Occupation": "Data Scientist"},
    {"Name": "Charlie", "Age": 35, "Occupation": "Teacher"}
]

# Calculate the maximum width for each column
max_name_length = max(len(person["Name"]) for person in data)
max_age_length = max(len(str(person["Age"])) for person in data)
max_occ_length = max(len(person["Occupation"]) for person in data)

# Print header
print(f"{'Name'.ljust(max_name_length)} | {'Age'.ljust(max_age_length)} | {'Occupation'.ljust(max_occ_length)}")
print("-" * (max_name_length + max_age_length + max_occ_length + 6))

# Print each row
for person in data:
    name = person["Name"].ljust(max_name_length)
    age = str(person["Age"]).ljust(max_age_length)
    occupation = person["Occupation"].ljust(max_occ_length)
    print(f"{name} | {age} | {occupation}")

Best Use Cases

  1. Debugging: Print statements are commonly used for debugging purposes to inspect the values of variables and the flow of execution.
  2. Logging: For simple logging purposes, print() can be used to output messages to the console. For more complex logging, the logging module is preferred.
  3. User Interaction: Displaying information to the user, such as prompts or instructions.
  4. Simple Reports: Generating simple textual reports or summaries that are printed to the console or written to a file.

Example: Interactive Menu

Here’s an example of an interactive menu using the print() function:

def print_menu():
    print("Main Menu")
    print("1. Option One")
    print("2. Option Two")
    print("3. Exit")

def option_one():
    print("You selected Option One.")

def option_two():
    print("You selected Option Two.")

while True:
    print_menu()
    choice = input("Enter your choice: ")
    if choice == '1':
        option_one()
    elif choice == '2':
        option_two()
    elif choice == '3':
        print("Exiting...")
        break
    else:
        print("Invalid choice. Please select a valid option.")

This example demonstrates how the print() function can be used to create a simple interactive menu that responds to user input.

The print() function is a powerful and flexible tool in Python, essential for a wide range of applications from debugging to user interaction. Understanding its parameters (sep, end, file) and how to format strings effectively with f-strings and the str.format() method allows you to create clear, informative output in your programs.

Write a Python function formatted_print that takes a nested list of integers and prints them in a tabular format with right-aligned columns.

Each integer should be printed in a field of width equal to the maximum number of digits in any integer in the nested list. Additionally, the function should print the sum of each row and the sum of each column at the end of the table.

  1. The print function should be used to display the formatted table.
  2. The function should dynamically determine the width of each field based on the maximum number of digits in the integers.
  3. The function should print the sum of each row and each column.
Example

For the input:

data = [
    [3, 45, 123],
    [56, 78, 9],
    [10, 2, 4]
]

The output should be:

  3  45 123 | 171
 56  78   9 | 143
 10   2   4 |  16
-------------
 69 125 136
Solution

Here’s how you could implement the formatted_print function:

def formatted_print(data):
    # Determine the maximum number of digits in any number in the nested list
    max_width = len(str(max(max(row) for row in data)))
    
    # Calculate the sum of each row
    row_sums = [sum(row) for row in data]
    
    # Calculate the sum of each column
    num_columns = len(data[0])
    col_sums = [sum(data[row][col] for row in range(len(data))) for col in range(num_columns)]
    
    # Print each row with formatted numbers
    for i, row in enumerate(data):
        formatted_row = " ".join(f"{num:{max_width}d}" for num in row)
        print(f"{formatted_row} | {row_sums[i]:{max_width}d}")
    
    # Print the separator line
    print("-" * (max_width * num_columns + num_columns - 1 + 3 + max_width))
    
    # Print the column sums
    formatted_col_sums = " ".join(f"{num:{max_width}d}" for num in col_sums)
    print(f"{formatted_col_sums}")

# Example usage
data = [
    [3, 45, 123],
    [56, 78, 9],
    [10, 2, 4]
]

formatted_print(data)

Explanation

  1. Determine the Maximum Width:
    • Find the largest number in the nested list.
    • Determine the number of digits in this number using len(str(max(...))).
  2. Calculate Row and Column Sums:
    • Compute the sum of each row using a list comprehension.
    • Compute the sum of each column using a nested list comprehension.
  3. Print the Table:
    • For each row, format each number to be right-aligned within the determined width.
    • Print the formatted row followed by the row sum.
  4. Print Separator Line:
    • Print a separator line using - characters. The length is calculated to match the table’s width.
  5. Print Column Sums:
    • Print the column sums formatted similarly to the table’s numbers.

This solution demonstrates advanced usage of the print function, string formatting, list comprehensions, and nested data structures in Python.

The input() function in Python

The input() function in Python is used to get user input during the execution of a program. It pauses the program and waits for the user to type something and then press Enter. Whatever the user types is then returned by the input() function as a string.

Here are some key points about input():

  • User Input: Pauses the program and waits for the user to enter some text.
  • Returns a String: The user’s input is always returned as a string, even if the user enters numbers.
  • Optional Prompt: You can optionally provide a message to be displayed before the user input, to instruct the user what kind of input is expected. This message is passed as an argument to the input() function.

Here’s an example of how to use input():

Python

name = input("What is your name? ")
print("Hello, " + name)

In this example, the program prompts the user with the message “What is your name? “. The user then types their name and presses Enter. The input() function then stores the user’s input in the variable name. Finally, the program prints a greeting message that includes the user’s name.

Type Casting:

Since input() always returns a string, if you want to use the user’s input as a number, you’ll need to convert it to the appropriate numerical data type (e.g., int or float) using type casting. Here’s an example:

Python

age = int(input("How old are you? "))
print("You are", age, "years old.")

In this example, the program prompts the user for their age. The input() function returns the user’s input as a string. We then use int() to convert the string to an integer before storing it in the variable age. Finally, the program prints a message that includes the user’s age.


Subscribe to get the latest posts sent to your email.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

About the HintsToday

AI HintsToday is One Stop Adda to learn All about AI, Data, ML, Stat Learning, SAS, SQL, Python, Pyspark. AHT is Future!

Explore the Posts

Latest Comments

Latest posts

Discover more from HintsToday

Subscribe now to keep reading and get access to the full archive.

Continue reading