diff --git a/Assignment_1.py b/Assignment_1.py new file mode 100644 index 0000000..1e1ee9a --- /dev/null +++ b/Assignment_1.py @@ -0,0 +1,12 @@ +from pascal_function import pascal_triangle as pas_tri +while True: + number = (input('enter the number:\n')) + try: + number = int(number) + except: + print("Invalid input, please enter an integer") + quit() + pas_tri(number) + continues= input("if you want to continue write yes, if not any key \n") + if continues != 'yes': + break \ No newline at end of file diff --git a/Assignment_3.py b/Assignment_3.py new file mode 100644 index 0000000..a5963e8 --- /dev/null +++ b/Assignment_3.py @@ -0,0 +1,21 @@ +def is_perfect_number(number): + """ a function that accepts an integer and return True + if the number is a perfect number or False if not""" + sum_1 = 0 + for i in range(1, number): + if number % i == 0: + sum_1 += i + sum_2 = (sum_1 + number) / 2 + return sum_1 == number and sum_2 == number + +number = input('enter a positive enteger \n') +try: + number = int(number) +except: + print("Invalid input, please enter an integer") + quit() +if is_perfect_number(number): + print (f"The number {number} is a perfect number") +else: + print (f"The number {number} is not a perfect number") + \ No newline at end of file diff --git a/Assignment_4.py b/Assignment_4.py new file mode 100644 index 0000000..05bdca2 --- /dev/null +++ b/Assignment_4.py @@ -0,0 +1,51 @@ +import random +import string +import tkinter as tk + +def generate_password(): + length = int(length_entry.get()) + num_lower = int(lower_entry.get()) + num_upper = int(upper_entry.get()) + num_special = int(special_entry.get()) + num_digits = length - num_lower - num_upper - num_special + if num_digits == 0: + password = ''.join(random.choices(string. ascii_lowercase, k=num_lower)) + password += ''.join(random.choices(string. ascii_uppercase, k=num_upper)) + password += ''.join(random.choices(string. punctuation, k=num_special)) + password = ''.join(random.sample( password, len(password))) + password_label.config(text= password) + else: + password = "Error! No.of characters doesn't match length" + password_label.config(text= password) + +root = tk.Tk() +root.title("Password Generator") + +length_label = tk.Label(root, text="Password length") +length_label.grid(row=0, column=0) +length_entry = tk.Entry(root) +length_entry.grid(row=0, column=1) + +lower_label = tk.Label(root, text="Number of lowercase letters") +lower_label.grid(row=1, column=0) +lower_entry = tk.Entry(root) +lower_entry.grid(row=1, column=1) + +upper_label = tk.Label(root, text="Number of uppercase letters") +upper_label.grid(row=2, column=0) +upper_entry = tk.Entry(root) +upper_entry.grid(row=2, column=1) + +special_label = tk.Label(root, text="Number of special characters") +special_label.grid(row=3, column=0) +special_entry = tk.Entry(root) +special_entry.grid(row=3, column=1) + +generate_button = tk.Button(root, text="Generate", command=generate_password) +generate_button.grid(row=4, column=0, columnspan=2, pady=10) + +password_label = tk.Label(root, text="") +password_label.grid(row=5, column=0, columnspan=2) + + +root.mainloop() \ No newline at end of file diff --git a/Assignment_module_3/Assignment_2.py b/Assignment_module_3/Assignment_2.py new file mode 100644 index 0000000..c1fbcb9 --- /dev/null +++ b/Assignment_module_3/Assignment_2.py @@ -0,0 +1,18 @@ +def word_sorting(words): + """a function that accepts a hyphen separated sequence of words + and return a sorted hyphen separated sequence of words""" + words=words.split("-") + words.sort() + return "-".join(words) +words =input('Enter a hyphen separated sequence of words \n') +print(word_sorting(words)) + +# the program below I wrote at first, which works perfectly but not efficient. +# input_words = input('Enter words seperated by - \n') +# input_words=list(input_words.split('-')) +# sorted_words = sorted(list(input_words)) +# for index, i in enumerate(sorted_words): +# if index < len(sorted_words)-1: +# print (i, end="-") +# else: +# print(i) diff --git a/Bonus_1.py b/Bonus_1.py new file mode 100644 index 0000000..25f2bce --- /dev/null +++ b/Bonus_1.py @@ -0,0 +1,5 @@ +lst = [{'make': 'Nokia', 'model': 216, 'color': 'Black'}, + {'make': 'Mi Max', 'model': '2', 'color': 'Gold'}, + {'make': 'Samsung', 'model': 7, 'color': 'Blue'}] +lst.sort(key=lambda x: x ['color']) +print(lst) diff --git a/Bonus_2.py b/Bonus_2.py new file mode 100644 index 0000000..a24b606 --- /dev/null +++ b/Bonus_2.py @@ -0,0 +1,5 @@ +lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +even_numbers = list(filter(lambda x : x % 2 == 0, lst )) +odd_numbers = list(filter(lambda x : x % 2 != 0, lst)) +print(even_numbers) +print(odd_numbers) \ No newline at end of file diff --git a/__pycache__/pascal_function.cpython-310.pyc b/__pycache__/pascal_function.cpython-310.pyc new file mode 100644 index 0000000..cac6680 Binary files /dev/null and b/__pycache__/pascal_function.cpython-310.pyc differ diff --git a/pascal_function.py b/pascal_function.py new file mode 100644 index 0000000..57ad92e --- /dev/null +++ b/pascal_function.py @@ -0,0 +1,28 @@ +def pascal_triangle(number): + """A function that accepts any integer n + and return the first n rows of pascal's triangle""" + row =[1] + for i in range(number): + for j in range(i+1): + print(row[j], end=" ") + row = [x+y for x, y in zip([0] + row , row + [0])] + print('\n') +if __name__ == "__pascal_triangle__": + pascal_triangle() + +# .... the program below I wrote at first, which works perfectly but not efficient........... +# def pascal_triangle(number): +# for i in range (number): +# pascal_number = i +# for index in range(i+1): +# if index == 0: +# print(index + 1, end=" ") +# elif index == 1: +# print(i, end=" ") +# else: +# pascal_number *= (i-(index-1))/(index) +# print (int(pascal_number), end=" " ) +# print('\n') + + +# pascal sequence: 1 , n , n(n−1)/2 , n(n−1)(n−2)/ 2*3 , n(n−1)(n−2)(n−3)/2*3*4......