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
45 changes: 27 additions & 18 deletions Age Calculator/calculate.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
import time
from calendar import isleap

def judge_leap_year(year):
if isleap(year):
return True
else:
return False
# Check if a year is a leap year
def judge_leap(year: int) -> bool:
return isleap(year)

def month_days(month, leap_year):
# Return number of days in a month, considering leap years
def month_days(month: int, leap_year: bool) -> int:
if month in [1, 3, 5, 7, 8, 10, 12]:
return 31
elif month in [4, 6, 9, 11]:
return 30
elif month == 2 and leap_year:
return 29
elif month == 2 and (not leap_year):
else:
return 28


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

localtime = time.localtime(time.time())

year = int(age)
Copy link
Preview

Copilot AI Sep 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Redundant conversion: age is already converted to int on line 21, so year = int(age) on line 25 is unnecessary. Use year = age instead.

Suggested change
year = int(age)
year = age

Copilot uses AI. Check for mistakes.

Expand All @@ -29,16 +29,25 @@ def month_days(month, leap_year):
begin_year = int(localtime.tm_year) - year
end_year = begin_year + year

# Count days in past years
for y in range(begin_year, end_year):
if (judge_leap_year(y)):
day = day + 366
if judge_leap(y):
day += 366
else:
day = day + 365
day += 365

leap_year = judge_leap_year(localtime.tm_year)
# Add days from current year
leap_year = judge_leap(localtime.tm_year)
for m in range(1, localtime.tm_mon):
day = day + month_days(m, leap_year)

day = day + localtime.tm_mday
print("\n\t%s's age is %d years or " % (name, year), end="")
print("%d months or %d days" % (month, day))
day += month_days(m, leap_year)

# Approximate breakdown (ignores time of day)
hours = day * 24
minutes = hours * 60
seconds = minutes * 60

print(f"\nHello {name}, you are approximately:")
print(f" {day:,} days")
print(f" {hours:,} hours")
print(f" {minutes:,} minutes")
print(f" {seconds:,} seconds old!")
39 changes: 33 additions & 6 deletions Digital Clock/main.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,50 @@
from time import strftime
from tkinter import Label, Tk
from tkinter import Label, Tk , Button
Comment on lines 1 to +2
Copy link
Preview

Copilot AI Sep 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra space before comma in the import statement. Should be from tkinter import Label, Tk, Button.

Copilot uses AI. Check for mistakes.


window = Tk()
window.title("Digital Clock")
window.geometry("300x100")
window.configure(bg="green")
window.resizable(False, False)

use_24h = True

clock_label = Label(
window, bg="black", fg="green", font=("Arial", 30, "bold"), relief="flat"
)
clock_label.place(x=50, y=50)


date_label = Label(
window, bg="black", fg="white", font=("Arial", 14)
)
date_label.pack(pady=(0, 10), anchor="center")



def toggle_format(_evt=None):
global use_24h
use_24h = not use_24h
fmt_btn.config(text="Switch to 24-hour" if not use_24h else "Switch to 12-hour")

fmt_btn = Button(window, text="Switch to 12-hour", command=toggle_format)
fmt_btn.pack(pady=(0, 8))
window.bind("<f>", toggle_format) # press 'f' to toggle



def update_label():
current_time = strftime("%H: %M: %S\n %d-%m-%Y ")
clock_label.configure(text=current_time)
clock_label.after(80, update_label)
clock_label.pack(anchor="center")

if use_24h:
time_text = strftime("%H:%M:%S")
else:
# strip leading zero in 12h mode for a cleaner look
time_text = strftime("%I:%M:%S %p").lstrip("0")
clock_label.configure(text=time_text)
date_label.configure(text=strftime("%A, %b %d, %Y"))
window.after(1000, update_label)

update_label()
window.mainloop()
window.mainloop()


26 changes: 26 additions & 0 deletions Geographic Distance/geographic_distance.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,32 @@ def calculate_distance_and_time(coord1, coord2, avg_speed):

return distance, travel_time

def validate_coordinates(coord):
"""Ensure latitude and longitude are within valid ranges."""
lat, lon = coord
if not (-90 <= lat <= 90):
raise ValueError(f"Latitude {lat} out of range (-90..90)")
if not (-180 <= lon <= 180):
raise ValueError(f"Longitude {lon} out of range (-180..180)")
return coord

def km_to_miles(km: float) -> float:
"""Convert kilometers to miles."""
return km * 0.621371

def format_travel_time(hours: float) -> str:
"""Format fractional hours as 'Hh Mm'."""
h = int(hours)
m = int(round((hours - h) * 60))
if m == 60:
h += 1
m = 0
return f"{h}h {m}m"






def main():
# Coordinates (latitude, longitude)
Expand Down
63 changes: 55 additions & 8 deletions Resume Builder/resume_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ def clear_screen():
"skills": [],
"projects": [],
"certifications": [],
"achievements": []
"achievements": [],
"internships":[]
Comment on lines +18 to +19
Copy link
Preview

Copilot AI Sep 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing space after the colon. Should be "internships": [] to maintain consistent formatting with other dictionary entries.

Copilot uses AI. Check for mistakes.


}

# Function to navigate back to the main menu
Expand Down Expand Up @@ -54,6 +56,9 @@ def add_experience():
break
back_to_menu()




# Add education details
def add_education():
while True:
Expand Down Expand Up @@ -127,6 +132,29 @@ def add_achievements():
if more == "no":
break
back_to_menu()

# Add internships
def add_internships():
while True:
clear_screen()
print("Enter Internship Information")
internship = {
"role": prompt("Role/Title: "),
"company": prompt("Company: "),
"location": prompt("Location (optional): "),
"start_date": prompt("Start Date (e.g., Jun 2024): "),
"end_date": prompt("End Date (e.g., Aug 2024 or 'Present'): "),
"details": [s.strip() for s in prompt("Highlights (comma-separated): ").split(",") if s.strip()]
}
resume_data["internships"].append(internship)

more = prompt("Add another internship? (yes/no): ").strip().lower()
if more == "no":
break
back_to_menu()




# PDF Generation class
class ResumePDF(FPDF):
Expand Down Expand Up @@ -186,7 +214,21 @@ def generate_pdf():
pdf.cell(0, 10, proj["name"], 0, 1)
pdf.multi_cell(0, 10, proj["description"])
pdf.cell(0, 10, f"Technologies Used: {proj['technologies']}", 0, 1)
# Internships
if resume_data["internships"]:
pdf.set_font('Arial', 'B', 12)
pdf.cell(0, 10, "Internships", 0, 1)
pdf.set_font('Arial', '', 11)
for it in resume_data["internships"]:
hdr = f"{it['role']} at {it['company']}"
if it.get("location"):
hdr += f" — {it['location']}"
pdf.cell(0, 10, f"{hdr} ({it['start_date']} - {it['end_date']})", 0, 1)
if it.get("details"):
pdf.multi_cell(0, 10, "Highlights: " + ", ".join(it["details"]))



# Certifications
pdf.set_font('Arial', 'B', 12)
pdf.cell(0, 10, "Certifications", 0, 1)
Expand All @@ -209,6 +251,8 @@ def generate_pdf():
os.system(f"start {pdf_output_path}" if os.name == "nt" else f"open {pdf_output_path}")
print(f"Resume generated: {pdf_output_path}")



# Main Menu using button_dialog from prompt_toolkit
def interactive_menu():
while True:
Expand All @@ -222,10 +266,11 @@ def interactive_menu():
("Education", 3),
("Skills", 4),
("Projects", 5),
("Certifications", 6),
("Achievements", 7),
("Generate PDF", 8),
("Exit", 9)
("Internships", 6),
("Certifications", 7),
("Achievements", 8),
("Generate PDF", 9),
("Exit", 10)
]
).run()

Expand All @@ -240,12 +285,14 @@ def interactive_menu():
elif choice == 5:
add_projects()
elif choice == 6:
add_certifications()
add_internships()
elif choice == 7:
add_achievements()
add_certifications()
elif choice == 8:
generate_pdf()
add_achievements()
elif choice == 9:
generate_pdf()
elif choice == 10:
break

# Start the program
Expand Down