Wednesday 31 July 2024

Password authentication process using Python

 

Password authentication process using Python

import hashlib, os


def hash_psd(psd: str) -> str:

    salt = os.urandom(16)

    hashed_psd = hashlib.pbkdf2_hmac('sha256',

                                     psd.encode(), salt, 100000)   

    return salt.hex() + hashed_psd.hex()


def verify_psd(stored_psd: str, provided_psd: str) -> bool:    

    salt = bytes.fromhex(stored_psd[:32])

    stored_hash = stored_psd[32:]

    hashed_psd = hashlib.pbkdf2_hmac('sha256',

                                     provided_psd.encode(),salt,100000)

    return hashed_psd.hex() == stored_hash


if __name__ == "__main__":

    psd_to_store = input("Enter a Password: ")

    stored_psd = hash_psd(psd_to_store)

    print(f'Stored Password: {stored_psd}')


    psd_attempt = 'clcoding'

    is_valid = verify_psd(stored_psd, psd_attempt)

    print(f'Password is valid: {is_valid}')


#clcoding.com

Stored Password: ec87cb3f526a3dc27e5a67fe7878f850a6b24c71c2941edc5bbe2c3500afc164cebb1ec8bbbc6a2260faa4825307600e

Password is valid: True

 

 

Saturday 27 July 2024

Olympic data-based analysis using Python



 import pandas as pd

import matplotlib.pyplot as plt

import seaborn as sns

df = pd.read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-07-27/olympics.csv')

print(df.head())

medal_counts = df.groupby('team')['medal'].count().reset_index()

medal_counts = medal_counts.sort_values(by='medal', ascending=False).head(10)

print(medal_counts)

top_countries = medal_counts['team'].head(5)

df_top_countries = df[df['team'].isin(top_countries)]

medals_by_year = df_top_countries.groupby(['year', 'team'])['medal'].count().reset_index()

# Plot: Medals Over Time for Top 5 Countries

plt.figure(figsize=(14, 8))

sns.lineplot(data=medals_by_year, x='year', y='medal', hue='team')

plt.title('Medals Over Time for Top 5 Countries')

plt.xlabel('Year')

plt.ylabel('Number of Medals')

plt.legend(title='Country')

plt.show()

# What is the distribution of medals by sport?

medals_by_sport = df.groupby('sport')['medal'].count().reset_index()

medals_by_sport = medals_by_sport.sort_values(by='medal', ascending=False).head(10)

# Plot: Top 10 Sports by Number of Medals

plt.figure(figsize=(14, 8))

sns.barplot(data=medals_by_sport, x='medal', y='sport', palette='viridis')

plt.title('Top 10 Sports by Number of Medals')

plt.xlabel('Number of Medals')

plt.ylabel('Sport')

plt.show()


#clcoding.com 

Thursday 25 July 2024

Olympics Logo using Python

 

import turtle


def draw_ring(color, x, y):

    turtle.penup()

    turtle.color(color)

    turtle.goto(x, y)

    turtle.pendown()

    turtle.circle(50)


turtle.speed(5)

turtle.width(5)

draw_ring("blue", -120, 0)

draw_ring("black", 0, 0)

draw_ring("red", 120, 0)

draw_ring("yellow", -60, -50)

draw_ring("green", 60, -50)

turtle.hideturtle()

turtle.done()

#clcoding.com

Python Coding challenge - Day 238 | What is the output of the following Python Code?

 

In Python, dictionaries are compared based on their keys and corresponding values. When you use the != operator to compare two dictionaries, it checks if there is any difference between them.

Here’s the explanation for the given code:

dict1 = {"a": 1, "b": 2}

dict2 = {"a": 1, "b": 3}

print(dict1 != dict2)

Dictionary Creation:

dict1 is created with keys "a" and "b" having values 1 and 2, respectively.

dict2 is created with keys "a" and "b" having values 1 and 3, respectively.

Comparison:

The comparison dict1 != dict2 checks if dict1 is not equal to dict2.

Python compares each key-value pair in dict1 with the corresponding key-value pair in dict2.

Key-Value Comparison:

Both dictionaries have the same keys: "a" and "b".

For key "a", both dictionaries have the value 1. So, these are equal.

For key "b", dict1 has the value 2 and dict2 has the value 3. These are not equal.

Since there is at least one key-value pair that differs ("b": 2 in dict1 vs. "b": 3 in dict2), the dictionaries are considered not equal.

Result:

The expression dict1 != dict2 evaluates to True.

Therefore, the output of print(dict1 != dict2) will be True, indicating that dict1 is not equal to dict2.

Sunday 21 July 2024

Computer Science: Programming with a Purpose

 


Are you eager to dive into the world of Java programming and software engineering? Coursera offers an excellent course titled Java Programming and Software Engineering Fundamentals that provides a comprehensive foundation in these essential skills. Whether you're a beginner or looking to refresh your knowledge, this course is a great starting point.

Why Learn Java?

Java is one of the most widely-used programming languages in the world. Its versatility, robustness, and cross-platform capabilities make it a favorite among developers. Java powers a multitude of applications, from mobile apps to large-scale enterprise systems. By learning Java, you open doors to a vast array of career opportunities in software development, web development, data science, and more.

Course Overview

The "Java Programming and Software Engineering Fundamentals" course is designed to take you from zero to proficient in Java programming. Here's a breakdown of what you can expect:

  1. Introduction to Java Programming

    • Understand the basics of Java syntax and structure.
    • Learn to write simple Java programs.
    • Get acquainted with essential programming concepts such as variables, data types, and control structures.
  2. Object-Oriented Programming (OOP)

    • Dive into the principles of OOP, a core paradigm in Java.
    • Master concepts like classes, objects, inheritance, and polymorphism.
    • Develop skills to design and implement complex software systems.
  3. Data Structures and Algorithms

    • Learn about essential data structures like arrays, lists, stacks, and queues.
    • Explore algorithms for sorting and searching.
    • Understand how to optimize your code for efficiency.
  4. Software Engineering Fundamentals

    • Gain insights into the software development lifecycle.
    • Learn about version control systems like Git.
    • Understand the importance of testing and debugging.
  5. Practical Projects

    • Apply your knowledge through hands-on projects.
    • Build real-world applications that solidify your understanding of Java and software engineering principles.

What Makes This Course Unique?

  • Expert Instructors: The course is taught by experienced instructors from top universities and industry experts. Their guidance ensures you receive high-quality education.
  • Flexible Learning: Coursera offers a flexible learning schedule, allowing you to learn at your own pace. This is ideal for balancing your studies with other commitments.
  • Interactive Learning Experience: The course includes quizzes, assignments, and projects that provide an interactive and engaging learning experience.
  • Certification: Upon completion, you'll receive a certificate that you can share with potential employers, showcasing your skills and dedication.

Who Should Enroll?

  • Beginners: If you're new to programming, this course will help you build a solid foundation in Java.
  • Aspiring Developers: Those looking to start a career in software development will find this course invaluable.
  • Professionals: If you're already working in the tech industry and want to enhance your skills or transition to a Java-centric role, this course is perfect for you.

Final Thoughts

The "Java Programming and Software Engineering Fundamentals" course on Coursera is an excellent opportunity to gain a deep understanding of Java and software engineering. With its comprehensive curriculum, expert instructors, and flexible learning options, this course is a valuable resource for anyone looking to advance their programming skills.

Ready to embark on your Java programming journey? Enroll today and take the first step towards becoming a proficient Java developer!

Enroll Now

Python Coding challenge - Day 237 | What is the output of the following Python Code?

 

This Python code defines a function and then calls it with specific arguments. Let's break it down step by step:

Function Definition:

def func(x, y):

    return x + y

def func(x, y):: This line defines a function named func that takes two parameters, x and y.

return x + y: This line specifies that the function will return the sum of x and y.

Function Call:

print(func(y=2, x=3))

func(y=2, x=3): This calls the func function with x set to 3 and y set to 2. The order of the arguments doesn't matter here because they are passed as keyword arguments.

The function func adds x and y, so 3 + 2 results in 5.

print(5): The print function then outputs the result, which is 5.

Putting it all together, the code defines a function that adds two numbers, then calls the function with x as 3 and y as 2, and prints the result, which is 5.

Saturday 20 July 2024

Python Coding challenge - Day 236 | What is the output of the following Python Code?

 

The code provided consists of two parts: defining a dictionary and using the fromkeys method to create a new dictionary. Let's break it down:

Defining a Dictionary:

d = {'a': 1, 'b': 2, 'c': 3}

Here, d is a dictionary with three key-value pairs:

'a' maps to 1

'b' maps to 2

'c' maps to 3

Using dict.fromkeys:

print(dict.fromkeys(d, 0))

The dict.fromkeys method is used to create a new dictionary from the keys of an existing iterable (in this case, the dictionary d). The method signature is:

dict.fromkeys(iterable, value)

iterable: An iterable containing keys.

value: The value to assign to each key in the new dictionary.

In this code, d is used as the iterable. When d is used as an iterable, it provides its keys ('a', 'b', and 'c'). The second argument is 0, which means all keys in the new dictionary will have the value 0.


Therefore, the new dictionary created by dict.fromkeys(d, 0) will have the same keys as d but with all values set to 0:

{'a': 0, 'b': 0, 'c': 0}

Output:

The print statement will output:

{'a': 0, 'b': 0, 'c': 0}

In summary, the code defines a dictionary d and then creates a new dictionary with the same keys as d but with all values set to 0, and prints this new dictionary.

Friday 19 July 2024

Why you should use PEP 8 guidelines ?

 

7. Error Prevention

Reason: PEP 8 includes guidelines that help prevent common errors, such as mixing tabs and spaces for indentation.


Without PEP 8:


def calculate_sum(a, b):

  return a + b

    print("Sum calculated")

  Cell In[16], line 3

    print("Sum calculated")

    ^

IndentationError: unexpected indent

With PEP 8:


def calculate_sum(a, b):

    return a + b


print("Sum calculated")

Sum calculated

6. Community Standard

Reason: PEP 8 is the de facto standard for Python code. Following it ensures your code aligns with what other Python developers expect, making it easier for others to read and contribute to your projects.


Without PEP 8:


class Person: 

  def __init__(self,name,age):

    self.name=name

    self.age=age

  def getDetails(self):

    return self.name + " is " + str(self.age)

With PEP 8:


class Person:

    def __init__(self, name, age):

        self.name = name

        self.age = age


    def get_details(self):

        return f"{self.name} is {self.age}"

5. Professionalism

Reason: Following PEP 8 shows that you care about writing high-quality code. It demonstrates professionalism and attention to detail, which are valuable traits in any developer.


Without PEP 8:


def square(x):return x*x

With PEP 8:


def square(x):

    return x * x

4. Maintainability

Reason: Code that adheres to a standard style is easier to maintain and update. PEP 8’s guidelines help you write code that is more maintainable in the long run.


Without PEP 8:


def processData(data): 

  result = data["name"].upper() + " is " + str(data["age"]) + " years old"

  return result


    

With PEP 8:


def process_data(data):

    result = f"{data['name'].upper()} is {data['age']} years old"

    return result


#clcoding.com

3. Collaboration

Reason: When everyone on a team follows the same style guide, it’s easier for team members to read and understand each other’s code, making collaboration smoother.


Without PEP 8:


def fetchData(): 

  # fetch data from API

  data = {"name":"John","age":30}

  return data

With PEP 8:


def fetch_data():

    # Fetch data from API

    data = {"name": "John", "age": 30}

    return data

2. Readability

Reason: Readable code is easier to understand and debug. PEP 8 encourages practices that make your code more readable.


Without PEP 8:


def add(a,b):return a+b

With PEP 8:


def add(a, b):

    return a + b

1. Consistency

Reason: Consistent code is easier to read and understand. PEP 8 provides a standard style guide that promotes consistency across different projects and among different developers.


Without PEP 8:


def my_function():print("Hello"); print("World")

my_function()

Hello

World

With PEP 8:


def my_function():

    print("Hello")

    print("World")


my_function()

Hello

World

Python Coding challenge - Day 235 | What is the output of the following Python Code?

 

In Python, memoryview is a built-in class that allows you to access the memory of an object without copying it. This can be useful for performance reasons, especially when dealing with large data sets or when you want to manipulate data in place.

Here's a breakdown of the code snippet you provided:

x = memoryview(b'clcoding')

print(type(x))

Creating a memoryview object:

b'clcoding' is a bytes object. The b prefix indicates that this is a bytes literal, which is a sequence of bytes.

memoryview(b'clcoding') creates a memoryview object that exposes the memory of the bytes object b'clcoding' without copying it.

Printing the type of the memoryview object:

print(type(x)) prints the type of the object x.

When you run this code, you will get the following output:

<class 'memoryview'>

This output indicates that x is an instance of the memoryview class.

Why use memoryview?

Efficiency: It allows you to access and manipulate data without copying it, which can save memory and improve performance.

Slicing and indexing: You can use memoryview to slice and index data structures such as bytes, bytearray, and other objects that support the buffer protocol.

Interoperability: It can be useful when working with binary data and interfacing with C/C++ extensions or other low-level APIs.

Example Usage

Here's a simple example to demonstrate the usage of memoryview:

data = b'clcoding'

mv = memoryview(data)

# Accessing elements

print(mv[0])  # Output: 99 (ASCII value of 'c')

# Slicing

print(mv[1:4])  # Output: <memory at 0x...> (a slice of the memoryview)

# Converting back to bytes

print(mv.tobytes())  # Output: b'clcoding'

In this example:

mv[0] accesses the first byte, which is 99, the ASCII value of 'c'.

mv[1:4] creates a new memoryview object that is a slice of the original memoryview.

mv.tobytes() converts the memoryview back to a bytes object.

Using memoryview is particularly beneficial when you need to work with large data structures efficiently.

Monday 15 July 2024

Practical Uses of continue and break Statements

 

Example 5: Summing Non-Negative Numbers

Using continue to skip negative numbers and sum the non-negative ones.


numbers = [10, -5, 20, -10, 30]

total = 0


for num in numbers:

    if num < 0:

        continue  # Skip negative numbers

    total += num


print(f"Total sum of non-negative numbers is: {total}")


#clcoding.com

Total sum of non-negative numbers is: 60

Example 4: Finding the First Negative Number

Using break to find and print the first negative number in a list.


numbers = [10, 20, -5, 30, -10]


for num in numbers:

    if num < 0:

        print(f"First negative number is: {num}")

        break  


#clcoding.com

First negative number is: -5

Example 3: Skipping a Specific Number and Stopping at Another

Combining continue and break to skip the number 3 and stop at 7.


for i in range(1, 11):

    if i == 3:

        continue  # Skip the number 3

    if i == 7:

        break  # Stop the loop when i is 7

    print(i)


#clcoding.com

1

2

4

5

6

Example 2: Stopping at a Specific Number

Using break to stop the loop when encountering the number 5.


for i in range(1, 11):

    if i == 5:

        break 

    print(i)


#clcoding.com

1

2

3

4

Example 1: Skipping Even Numbers

Using continue to skip even numbers in a loop.


for i in range(1, 11):

    if i % 2 == 0:

        continue  

    print(i)


#clcoding.com

1

3

5

7

9

Sunday 14 July 2024

Python Coding challenge - Day 234 | What is the output of the following Python Code?

 

Class Definition

Class Vehicle:

class Vehicle:

    def __init__(self, color):

        self.color = color

Class Declaration: class Vehicle: defines a class named Vehicle.

Constructor: def __init__(self, color): defines the constructor method (__init__). It initializes a new instance of Vehicle.

Instance Variable: self.color = color assigns the value of the parameter color to the instance variable self.color.

Class Car (Inheritance):

class Car(Vehicle):

    def __init__(self, color, model):

        super().__init__(color)

        self.model = model

Class Declaration with Inheritance: class Car(Vehicle): defines a class named Car that inherits from the Vehicle class.

Constructor: def __init__(self, color, model): defines the constructor method (__init__). It initializes a new instance of Car.

Calling Superclass Constructor: super().__init__(color) calls the constructor of the superclass Vehicle to initialize the color attribute.

Instance Variable: self.model = model assigns the value of the parameter model to the instance variable self.model.

Object Instantiation

Creating an Instance:

my_car = Car("Red", "Toyota")

This line creates an instance of the Car class with color set to "Red" and model set to "Toyota". The constructor of the Vehicle class is also called to initialize the color attribute.

Accessing Attributes

Printing the Model:

print(my_car.model)

This line prints the model attribute of the my_car object, which is "Toyota".

Complete Code

Here is the complete code for clarity:

class Vehicle:

    def __init__(self, color):

        self.color = color

class Car(Vehicle):

    def __init__(self, color, model):

        super().__init__(color)

        self.model = model

my_car = Car("Red", "Toyota")

print(my_car.model)

Output

The output of the code is: Toyota

Explanation Summary

Vehicle Class: Defines a vehicle with a color.

Car Class: Inherits from Vehicle and adds a model attribute.

Object Creation: An instance of Car is created with color "Red" and model "Toyota".

Attribute Access: The model attribute of my_car is printed, displaying "Toyota".

Saturday 13 July 2024

Different Line graph plot using Python

 

5. Interactive Line Graph using Plotly

import plotly.express as px


# Sample data

data = {

    'x': [1, 2, 3, 4, 5],

    'y': [2, 3, 5, 7, 11]

}


# Creating an interactive line plot

fig = px.line(data, x='x', y='y', 

              title='Interactive Line Graph using Plotly', markers=True)

fig.show()


4. Line Graph using Seaborn

import seaborn as sns

import matplotlib.pyplot as plt


# Sample data

data = {

    'x': [1, 2, 3, 4, 5],

    'y': [2, 3, 5, 7, 11]

}


# Creating a Seaborn line plot

sns.lineplot(x='x', y='y', data=data, marker='o')

plt.title('Line Graph using Seaborn')

plt.xlabel('X-axis')

plt.ylabel('Y-axis')

plt.grid(True)

plt.show()

3. Line Graph with Error Bars using Matplotlib

import matplotlib.pyplot as plt

import numpy as np


# Sample data

x = np.array([1, 2, 3, 4, 5])

y = np.array([2, 3, 5, 7, 11])

yerr = np.array([0.5, 0.4, 0.3, 0.2, 0.1])


# Plotting the line graph with error bars

plt.errorbar(x, y, yerr=yerr, fmt='-o', capsize=5)

plt.title('Line Graph with Error Bars')

plt.xlabel('X-axis')

plt.ylabel('Y-axis')

plt.grid(True)

plt.show()

2. Multiple Line Graphs using Matplotlib

import matplotlib.pyplot as plt


# Sample data

x = [1, 2, 3, 4, 5]

y1 = [2, 3, 5, 7, 11]

y2 = [1, 4, 6, 8, 10]


# Plotting multiple line graphs

plt.plot(x, y1, label='Line 1', marker='o')

plt.plot(x, y2, label='Line 2', marker='s')

plt.title('Multiple Line Graphs')

plt.xlabel('X-axis')

plt.ylabel('Y-axis')

plt.legend()

plt.grid(True)

plt.show()

1. Basic Line Graph using Matplotlib

import matplotlib.pyplot as plt


# Sample data

x = [1, 2, 3, 4, 5]

y = [2, 3, 5, 7, 11]


# Plotting the line graph

plt.plot(x, y, marker='o')

plt.title('Basic Line Graph')

plt.xlabel('X-axis')

plt.ylabel('Y-axis')

plt.grid(True)

plt.show()

5 Practical Examples to Master Python Decorators

 

5. Decorator for Timing
A decorator to measure the execution time of a function.

import time

def timer(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"{func.__name__} executed in {end_time - start_time} seconds")
        return result
    return wrapper

@timer
def slow_function():
    time.sleep(2)
    return "Finished"

print(slow_function())

#clcoding.com
slow_function executed in 2.001049518585205 seconds
Finished
4. Decorator for Caching
A decorator to cache the results of expensive function calls.

def cache(func):
    cached_results = {}
    def wrapper(*args):
        if args in cached_results:
            return cached_results[args]
        result = func(*args)
        cached_results[args] = result
        return result
    return wrapper

@cache
def slow_function(x):
    print(f"Computing {x}...")
    return x * x

print(slow_function(4))
print(slow_function(4))
print(slow_function(5))

#clcoding.com
Computing 4...
16
16
Computing 5...
25
3. Decorator for Logging
A decorator to log function calls and their arguments.

def logger(func):
    def wrapper(*args, **kwargs):
        print(f"Function {func.__name__} called with args: {args} and kwargs: {kwargs}")
        result = func(*args, **kwargs)
        print(f"Function {func.__name__} returned {result}")
        return result
    return wrapper

@logger
def add(a, b):
    return a + b

add(3, 5)

#clcoding.com
Function add called with args: (3, 5) and kwargs: {}
Function add returned 8
8
2. Decorator with Arguments
A decorator that accepts arguments to customize its behavior.

def repeat(n):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(n):
                func(*args, **kwargs)
        return wrapper
    return decorator

@repeat(3)
def greet(name):
    print(f"Hello, {name}!")
greet("Clcoding")

#clcoding.com
Hello, Clcoding!
Hello, Clcoding!
Hello, Clcoding!
1. Basic Decorator
A simple example to understand the basic structure and functionality of decorators.

def simple_decorator(func):
    def wrapper():
        print("Before the function runs")
        func()
        print("After the function runs")
    return wrapper

@simple_decorator
def say_hello():
    print("Hello!")

say_hello()

#clcoding.com
Before the function runs
Hello!
After the function runs

Python Coding challenge - Day 233 | What is the output of the following Python Code?



 Let's break down the code and explain what each part does:

my_list = [1, 2, 3, 4, 5]

my_list[1:3] = []

print(my_list)

Step-by-Step Explanation

Create a List:

my_list = [1, 2, 3, 4, 5]

This line initializes a list named my_list with the elements [1, 2, 3, 4, 5].

Slice Assignment:

my_list[1:3] = []

my_list[1:3] is a slice of the list from index 1 to index 3, but not including index 3. In this case, my_list[1:3] refers to the sublist [2, 3].

The assignment my_list[1:3] = [] replaces the slice [2, 3] with an empty list [], effectively removing the elements 2 and 3 from the list.

Print the Modified List:

print(my_list)

This line prints the modified list.

After the slice assignment, my_list is modified to remove the elements at indices 1 and 2 (the elements 2 and 3). The resulting list is:

[1, 4, 5]

Visual Breakdown

Let's visualize the process:

Initial list: [1, 2, 3, 4, 5]

Slice my_list[1:3] refers to [2, 3]

Assigning [] to the slice removes [2, 3]

Resulting list: [1, 4, 5]

Full Code with Output

Here is the complete code along with its output:

my_list = [1, 2, 3, 4, 5]

my_list[1:3] = []

print(my_list)  # Output: [1, 4, 5]

The output is [1, 4, 5], as explained.

Friday 12 July 2024

Function Interfaces in Python

 

10. Combining Concepts

def trace(func):

    

    """A decorator that traces function calls."""

    

    def wrapper(*args, **kwargs):

        print(f"TRACE: calling {func.__name__}() with {args}, {kwargs}")

        result = func(*args, **kwargs)

        print(f"TRACE: {func.__name__}() returned {result}")

        return result

    return wrapper


@trace

def compute_area(length: float, width: float) -> float:

    """Compute the area of a rectangle."""

    return length * width


area = compute_area(3.0, 4.5)


# clcoding.com

TRACE: calling compute_area() with (3.0, 4.5), {}

TRACE: compute_area() returned 13.5

9. Decorators

def debug(func):

    """A decorator that prints the function 

    signature and return value."""

    def wrapper(*args, **kwargs):

        print(f"Calling {func.__name__} with {args} and {kwargs}")

        result = func(*args, **kwargs)

        print(f"{func.__name__} returned {result}")

        return result

    return wrapper


@debug

def add(a, b):

    """Add two numbers."""

    return a + b


add(3, 4)


# clcoding.com

Calling add with (3, 4) and {}

add returned 7

7

8. Lambda Functions

square = lambda x: x * x

print(square(5))  


# clcoding.com

25

7. First-Class Functions

def square(x):

    """Return the square of x."""

    return x * x


def apply_function(func, value):

    """Apply a function to a value 

    and return the result."""

    return func(value)


result = apply_function(square, 4)

print(result)  


# clcoding.com

16

6. Docstrings

def divide(x, y):

    """

    Divide x by y and return the result.

    

    :param x: numerator

    :param y: denominator

    :return: division result

    """

    return x / y


result = divide(10, 2)

print(result)  


# clcoding.com

5.0

5. Function Annotations

def multiply(x: int, y: int) -> int:

    

    """Multiply two integers 

    and return the result."""

    

    return x * y


result = multiply(3, 4)

print(result)


# clcoding.com

12

4. Arbitrary Keyword Parameters

def print_info(**kwargs):

    

    """Print key-value pairs 

    from keyword arguments."""

    

    for key, value in kwargs.items():

        print(f"{key}: {value}")


print_info(name="Clcoding", age=30, city="Earth")


# clcoding.com

name: Clcoding

age: 30

city: Earth

3. Arbitrary Positional Parameters

def sum_all(*args):

    

    """Sum all given arguments."""

    

    return sum(args)


total = sum_all(1, 2, 3, 4, 5)

print(total)  


# clcoding.com

15

2. Keyword Parameters

def greet(name, greeting="Hello"):

    """Greet someone with a provided 

    greeting or a default greeting."""

    return f"{greeting}, {name}!"


message = greet("Clcoding")

print(message)  


message = greet("Python", "Hi")

print(message) 


# clcoding.com

Hello, Clcoding!

Hi, Python!

1. Basic Function Definition

def add(a, b):

    

    """Add two numbers and 

    return the result."""

    

    return a + b


result = add(3, 5)

print(result)  


# clcoding.com

8

10 Level of writing Python List

 Level 1: Basic List Creation

# Creating a simple list

my_list = [1, 2, 3, 4, 5]

print(my_list)


#clcoding.com

[1, 2, 3, 4, 5]

Level 2: Accessing List Elements

# Accessing elements by index

my_list = [1, 2, 3, 4, 5]

first_element = my_list[0]

last_element = my_list[-1]

print( "First:", first_element, "Last:", last_element)


#clcoding.com

First: 1 Last: 5



Level 3: List Slicing

# Slicing a list

my_list = [1, 2, 3, 4, 5]

sub_list = my_list[1:4]

print(sub_list)


#clcoding.com

[2, 3, 4]

Level 4: Adding Elements to a List

# Appending and extending a list

my_list = [1, 2, 3, 4, 5]

my_list.append(6)

my_list.extend([7, 8])

print(my_list)


#clcoding.com

[1, 2, 3, 4, 5, 6, 7, 8]



Level 5: Removing Elements from a List

# Removing elements

my_list = [1, 2, 3, 4, 5]

my_list.remove(2)  

popped_element = my_list.pop()  

print(my_list)

print(popped_element)


#clcoding.com

[1, 3, 4]

5

Level 6: List Comprehensions

# Using list comprehensions

my_list = [1, 2, 3, 4, 5]

squared_list = [x**2 for x in my_list]

print(squared_list)


#clcoding.com

[1, 4, 9, 16, 25]



Level 7: Nested Lists

# Creating and accessing nested lists


nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

element = nested_list[1][2]  

print(nested_list, element)


#clcoding.com

[[1, 2, 3], [4, 5, 6], [7, 8, 9]] 6

Level 8: Using List Functions and Methods

# Using built-in functions and methods


my_list = [1, 2, 3, 4, 5]

length = len(my_list)

sorted_list = sorted(my_list)

my_list.sort(reverse=True)

print(length, sorted_list, my_list)


#clcoding.com

5 [1, 2, 3, 4, 5] [5, 4, 3, 2, 1]



Level 9: List Iteration

# Iterating over a list

for element in my_list:

    print(element)

5

4

3

2

1

Level 10: Advanced List Operations

# Using advanced operations like map, filter, and reduce


my_list = [1, 2, 3, 4, 5]

from functools import reduce


# Map: applying a function to each element

doubled_list = list(map(lambda x: x * 2, my_list))

print(doubled_list)


# Filter: filtering elements based on a condition

even_list = list(filter(lambda x: x % 2 == 0, my_list))

print(even_list)


# Reduce: reducing the list to a single value

sum_of_elements = reduce(lambda x, y: x + y, my_list)

print(sum_of_elements)


#clcoding.com

[2, 4, 6, 8, 10]

[2, 4]

15



Wednesday 10 July 2024

6 Things I Wish I Knew Earlier About Python Numbers

 

6. Fraction Module for Rational Numbers

The fractions module provides support for rational number arithmetic.


from fractions import Fraction


a = Fraction(1, 3)

b = Fraction(2, 3)

c = a + b

print(c)  


#clcoding.com

1

5. Decimal Module for Precise Calculations

For financial and other applications requiring precise decimal representation, the decimal module is very useful.


from decimal import Decimal, getcontext


getcontext().prec = 6  

a = Decimal('0.1')

b = Decimal('0.2')

c = a + b

print(c)  


#clcoding.com

0.3

4. Built-In Functions for Numerical Operations
Python provides several built-in functions to perform various numerical operations, such as abs(), round(), pow(), and many more.

print(abs(-5))  
print(round(3.14159, 2))  
print(pow(2, 3))  

#clcoding.com
5
3.14
8
3. Complex Numbers
Python natively supports complex numbers, which can be created by adding a 'j' or 'J' suffix to a number.

a = 3 + 4j  
print(a.real)  
print(a.imag)  

#clcoding.com
3.0
4.0
2. Floating-Point Precision
Floating-point numbers in Python are based on the IEEE 754 double-precision standard, which can lead to precision issues.

a = 0.1 + 0.2
print(a)  

#clcoding.com
0.30000000000000004

1. Integers Are of Arbitrary Precision
In Python, integers are of arbitrary precision, meaning they can grow as large as the memory allows. This is different from many other programming languages where integers have fixed sizes.

a = 10**100  
print(a)  

#clcoding.com
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Popular Posts

Categories

AI (31) Android (24) AngularJS (1) Assembly Language (2) aws (17) Azure (7) BI (10) book (4) Books (146) C (77) C# (12) C++ (82) Course (67) Coursera (195) Cybersecurity (24) data management (11) Data Science (106) Data Strucures (8) Deep Learning (11) Django (14) Downloads (3) edx (2) Engineering (14) Excel (13) Factorial (1) Finance (6) flask (3) flutter (1) FPL (17) Google (20) Hadoop (3) HTML&CSS (47) IBM (25) IoT (1) IS (25) Java (93) Leet Code (4) Machine Learning (46) Meta (18) MICHIGAN (5) microsoft (4) Pandas (3) PHP (20) Projects (29) Python (876) Python Coding Challenge (281) Questions (2) R (70) React (6) Scripting (1) security (3) Selenium Webdriver (2) Software (17) SQL (42) UX Research (1) web application (8)

Followers

Person climbing a staircase. Learn Data Science from Scratch: online program with 21 courses