Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions Arthimetics.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from math import ceil
def addition(number_1, number_2):
add = number_1 + number_2
return ceil(add)
def subtruction(number_1, number_2):
sub = number_1 - number_2
return ceil(sub)
def multiplication(number_1, number_2):
mul = number_1 * number_2
return ceil(mul)
def division(number_1, number_2):
try:
divide = number_1 / number_2
except ZeroDivisionError as e:
return e
else:
return ceil(divide)
Binary file added __pycache__/Arthimetics.cpython-310.pyc
Binary file not shown.
30 changes: 30 additions & 0 deletions assignment_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import string


def write_alphabet(per_line):
"""A function that accepts the number of letters per line
and writes all English alphabet letters (upper and lower) in to a
file name letters.txt. it works for any number of letters per line"""
with open("letters.txt", "w") as write_file:
all_letters = string.ascii_letters # all alphabets given to all_letters
size = len(all_letters)
for letters in range(0, size - per_line + 1, per_line):
for index in range(letters, letters + per_line):
write_file.write(all_letters[index])
write_file.write("\n")
# this if clause is for perline which is not divident of 52
if size % per_line != 0:
write_file.write(all_letters[-(size % per_line) :])


# the function will be called here
try:
number_letters = int(input("Enter the number of letters per line:........ "))
if number_letters <= 0:
raise RuntimeError("Error: please enter a number > 0 ")
except ValueError as e:
print(e)
except RuntimeError as e:
print(e)
else:
write_alphabet(number_letters)
10 changes: 10 additions & 0 deletions assignment_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import os
import string
for char in string.ascii_uppercase:
with open(f"{char}.txt", 'w'):
pass
# the following code helps us to delete all the files created.
delete = input("do you want to delete the files?......." )
if delete in ["yes","Yes","y","Y"]:
for char in string.ascii_uppercase:
os.remove(f"{char}.txt" )
33 changes: 33 additions & 0 deletions assignment_3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@

from math import gcd
def lcm_numbers(*numbers):
"""A function that accepts any size of numbers
and calculates lcm of the numbers according to:
lcm(a,b,c.....n) = lcm(lcm(a,b),c,d........n)"""
if len(numbers)==2:
return numbers[0] * numbers[1] // gcd(numbers[0], numbers[1])
else:
# since the argument passed to the function is a tuple,
# we need to change it in to list first to modify it.
list_numbers = []
for i in numbers:
list_numbers.append(i)
# x holds always the lcm of a two number
x = lcm_numbers(list_numbers[0],list_numbers[1])
list_numbers.pop(0)
list_numbers.pop(0)
list_numbers.insert(0,x)
return lcm_numbers(*list_numbers)

numbers = input('Enter numbers separated by space\n').split(" ")
try:
numbers = [int(i) for i in numbers]
if len(numbers) == 1:
raise ArithmeticError ("Error! the lcm of one number is the number itself")
except ValueError as e:
print(e)
except ArithmeticError as e:
print(e)
else:
lcm_result = lcm_numbers(*numbers)
print(lcm_result)
51 changes: 51 additions & 0 deletions assignment_4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
from tkinter import ttk
from Arthimetics import* # all the arthimetic functions are in one file.
import tkinter as tk
def calculator():
"""A function that accepts two numbers and an operator from the user input fields
and perform the chosen operation on the two operands. Then display the result on
the screen"""
try:
number_1 = float(number_1_entry.get())
number_2 = float(number_2_entry.get())
except ValueError:
print(result_display.config(text="Error! please enter a number"))
else:
operator = list_down.get()
if operator == "Addition":
result = addition(number_1,number_2)
elif operator == "Subtruction":
result = subtruction(number_1,number_2)
elif operator == "Multiplication":
result = multiplication(number_1,number_2)
else:
result = division(number_1,number_2)
result_display.config(text= result)

root = tk.Tk()
root.title("Simple Calculator")

number_1_label = tk.Label(root, text="Enter First Number")
number_1_label.grid(row= 0, column= 0, pady=10)
number_1_entry = tk.Entry(root)
number_1_entry.grid(row=0, column=1)

number_2_label = tk.Label(root, text="Enter Second Number")
number_2_label.grid(row= 1, column= 0)
number_2_entry = tk.Entry(root)
number_2_entry.grid(row=1, column=1)
result_label = tk.Label(root, text=" = ")
result_label.grid(row= 2, column= 2)
result_display = tk.Label(root, text="")
result_display.grid(row=2, column=3)

options = ["Addition","Subtruction","Multiplication","Division"] # list of operators to be chosen by the user.
choose_arithmetic_label = tk.Label(root, text = "Choose an Operator ")
choose_arithmetic_label.grid(row= 3, column= 0)
list_down = ttk.Combobox(state= "readonly", values=options)
list_down.grid(row= 3, column= 1)
generate_button = tk.Button(root, text="Go", command=calculator)
generate_button.grid(row=4, column=1, columnspan=1,pady=10)

root.mainloop()