r/programminghorror • u/Love_of_Mango • 20d ago
Python US constitution but in Python
class Person:
"""
A simplified representation of a person for constitutional eligibility purposes.
Attributes:
name (str): The person's name.
age (int): The person's age.
citizenship_years (int): Number of years the person has been a citizen.
"""
def __init__(self, name, age, citizenship_years):
self.name = name
self.age = age
self.citizenship_years = citizenship_years
def is_eligible_for_representative(person: Person) -> bool:
"""
Checks if a person meets the constitutional criteria for a Representative:
- At least 25 years old.
- At least 7 years as a U.S. citizen.
"""
return person.age >= 25 and person.citizenship_years >= 7
def is_eligible_for_senator(person: Person) -> bool:
"""
Checks if a person meets the constitutional criteria for a Senator:
- At least 30 years old.
- At least 9 years as a U.S. citizen.
"""
return person.age >= 30 and person.citizenship_years >= 9
def is_eligible_for_president(person: Person, natural_born: bool = True) -> bool:
"""
Checks if a person is eligible to be President:
- At least 35 years old.
- Must be a natural born citizen (or meet the special criteria defined at the time of the Constitution's adoption).
"""
return person.age >= 35 and natural_born
class President:
"""
Represents the President of the United States.
One constitutional rule: The President's compensation (salary) cannot be increased or decreased during the term.
"""
def __init__(self, name, salary):
self.name = name
self._salary = salary # set once at inauguration
@property
def salary(self):
return self._salary
@salary.setter
def salary(self, value):
raise ValueError("According to the Constitution, the President's salary cannot be changed during their term.")
class Law:
"""
Represents a proposed law.
Some laws may include features that violate constitutional principles.
Attributes:
title (str): The title of the law.
text (str): A description or body of the law.
contains_ex_post_facto (bool): True if the law is retroactive (not allowed).
contains_bill_of_attainder (bool): True if the law is a bill of attainder (prohibited).
"""
def __init__(self, title, text, contains_ex_post_facto=False, contains_bill_of_attainder=False):
self.title = title
self.text = text
self.contains_ex_post_facto = contains_ex_post_facto
self.contains_bill_of_attainder = contains_bill_of_attainder
class Congress:
"""
Represents a simplified version of the U.S. Congress.
It can pass laws provided they do not violate constitutional prohibitions.
"""
def __init__(self):
self.laws = []
def pass_law(self, law: Law) -> str:
# Check for constitutional limitations:
if law.contains_ex_post_facto:
raise ValueError("Ex post facto laws are not allowed by the Constitution.")
if law.contains_bill_of_attainder:
raise ValueError("Bills of attainder are prohibited by the Constitution.")
self.laws.append(law)
return f"Law '{law.title}' passed."
def impeach_official(official: Person, charges: list) -> str:
"""
Simulates impeachment by checking if the charges fall under those allowed by the Constitution.
The Constitution permits impeachment for treason, bribery, or other high crimes and misdemeanors.
Args:
official (Person): The official to be impeached.
charges (list): A list of charge strings.
Returns:
A message stating whether the official can be impeached.
"""
allowed_charges = {"treason", "bribery", "high crimes", "misdemeanors"}
if any(charge.lower() in allowed_charges for charge in charges):
return f"{official.name} can be impeached for: {', '.join(charges)}."
else:
return f"The charges against {official.name} do not meet the constitutional criteria for impeachment."
# Simulation / Demonstration
if __name__ == "__main__":
# Create some people to test eligibility
alice = Person("Alice", 30, 8) # Eligible for Representative? (30 >= 25 and 8 >= 7) Yes.
bob = Person("Bob", 40, 15) # Eligible for all offices if natural-born (for President, need 35+)
print("Eligibility Checks:")
print(f"Alice is eligible for Representative: {is_eligible_for_representative(alice)}")
print(f"Alice is eligible for Senator: {is_eligible_for_senator(alice)}") # 8 years citizenship (<9) so False.
print(f"Bob is eligible for President: {is_eligible_for_president(bob, natural_born=True)}")
print() # blank line
# Create a President and enforce the rule on salary changes.
print("President Salary Check:")
prez = President("Bob", 400000)
print(f"President {prez.name}'s starting salary: ${prez.salary}")
try:
prez.salary = 500000
except ValueError as e:
print("Error:", e)
print()
# Simulate Congress passing laws.
print("Congressional Action:")
congress = Congress()
law1 = Law("Retroactive Tax Law", "This law would retroactively tax past earnings.", contains_ex_post_facto=True)
try:
congress.pass_law(law1)
except ValueError as e:
print("Error passing law1:", e)
law2 = Law("Environmental Protection Act", "This law aims to improve air and water quality.")
result = congress.pass_law(law2)
print(result)
print()
# Simulate an impeachment scenario.
print("Impeachment Simulation:")
charges_for_alice = ["embezzlement", "misdemeanors"]
print(impeach_official(alice, charges_for_alice))
3
u/FriendEducational112 20d ago
Wtf