import random class verb(object): def __init__(self,plural,singular,tense): self.singular = singular self.plural = plural self.tense = tense class noun(object): def __init__(self,word,person,number): self.word = word self.person = person self.number = number class phrase(object): def __init__(self, present, past, active, dobject): self.present = present self.past = past self.active = active self.dobject = dobject auxilliary_verbs = [ verb("will", "will", "present"), verb("could", "could", "present"), verb("are", "is", "active"), verb("have", "has", "past") ] subjects = [ noun("lycra louts", 3, 2), noun("promiscuus britain",3,1), noun("new labour",3,1), noun("clegg's cronies",3,1), noun("the coalition",3,1), noun("brussels",3,1), noun("the bbc",3,1), noun("the imf",3,1), noun("the e.u.",3,1), noun("the euro",3,1), noun("the loony left",3,1), noun("the unions",3,2), # May be a bit quaint this one noun("channel 4",3,1), noun("channel 5",3,1), noun("your local council",3,1), noun("laughing mob",3,1), noun("bankrupt europeans",3,2), noun("the eurozone",3,2), noun("the italians",3,2), noun("the greeks",3,2), noun("the french",3,2), noun("the germans",3,2), noun("green energy",3,1), noun("wind farms",3,2), noun("the poles",3,2), noun("brussels bureaucrats",3,2), noun("muslims",3,2), noun("greedy rioters",3,2), noun("rioters",3,2), noun("so-called protestors",3,2), noun("immigrants",3,2), # Except those from the UK to Spain & the Algarve of course noun("teachers",3,2), noun("the unemployed",3,2), noun("gypsies",3,2), noun("problem families",3,2), noun("greedy bankers",3,2), noun("city bankers",3,2), noun("mortgage lenders",3,2), noun("bankers",3,2), noun("parking officials",3,2), noun("incompetent officials",3,2), noun("rip-off plumbers",3,2), noun("cowboy builders",3,2), noun("sex addicts",3,2), noun("sadomasochists",3,2), noun("prostitutes",3,2), noun("transvestite prostitutes",3,2), noun("selfish public sector workers",3,2), noun("yobs",3,2), noun("hoodies",3,2), noun("feral children",3,2), # They hate children *and* paedophiles FFS, make your minds up noun("chavs",3,2), noun("the p.c. brigade",3,2), noun("hysterical mothers",3,2), noun("hysterical jobsworths",3,2), noun("hysterical judges",3,2), noun("frantic women",3,2), noun("puppets",3,2), # just because noun("ambulance-chasing personal injury lawyers",3,2), noun("phone hackers",3,2), noun("asylum seekers",3,2), # Nicer way of saying 'brown people' noun("gays",3,2), noun("lesbians",3,2), noun("single mothers",3,2), noun("bewildered shoppers",3,2), noun("confused bystanders",3,2), noun("angry customers",3,2), noun("paedophiles",3,2), noun("striking tube workers",3,2), noun("striking train drivers",3,2), noun("striking teachers",3,2), noun("a privately educated loner",3,1), noun("a sex addicted lawyer",3,1), noun("a reality tv star",3,1), noun("a tearful wayne rooney",3,1), noun("sarkozy",3,1), noun("merkel",3,1), noun("nick clegg",3,1), noun("vince cable",3,1), noun("ed miliband",3,1), noun("gordon brown",3,1), noun("alistair darling",3,1), noun("jacqui smith",3,1), noun("teenage sex",3,1), noun("political correctness",3,1), noun("health & safety",3,1), noun("feminism",3,1), noun("the metric system",3,1), # For fuck's sake noun("dumbing-down",3,1), noun("rip-off britain",3,1), noun("the internet",3,1), noun("green energy",3,1), noun("solar power",3,1), noun("recycling",3,1), noun("organic food",3,1), noun("frankenstein food",3,1), noun("gm food",3,1), noun("wi-fi",3,1), noun("x-factor",3,1), noun("i'm a celebrity",3,1), noun("trash tv",3,1), noun("facebook",3,1), # I CAN'T BELIEVE THE MAIL ACTUALLY SAID FACEBOOK COULD GIVE YOU CANCER, FOR REAL noun("filth on television",3,1), noun("the human rights act",3,1), noun("the nanny state",3,1), noun("cancer",3,1), # Could cancer give you cancer? noun("binge drinking",3,1), noun("the MMR jab",3,1), # Murdering cunts noun("the house price crash",3,1) # Hahahaha ] # Transitive phrases (i.e. bad thing they do) transitive_phrases = [ phrase("escape","escaped","escaping",""), phrase("cause", "caused", "causing", "energy bills to double"), phrase("cause", "caused", "causing", "financial meltdown"), phrase("ignore", "ignored", "ignoring", "calls for constraint"), phrase("face", "faced", "facing", "new stealth tax"), phrase("give", "given", "giving", "cancer"), phrase("give", "given", "giving", "cancer"), # Have it twice as they're so bloody obsessed by it phrase("infect", "infected", "infecting", "with AIDS"), phrase("give", "given", "giving", "swine flu"), phrase("make", "made", "making", "obese"), phrase("give", "given", "giving", "diabetes"), phrase("make", "made", "making", "impotent"), phrase("plot tax raid on","plotted tax raid on","plotting tax raid on",""), phrase("protect", "protected","protecting", "gold-plated pension pots"), phrase("hack", "hacked", "hacking", ""), phrase("phone-hack", "phone-hacked", "phone-hacking", ""), phrase("turn","turned","turning","gay"), # Cunts phrase("scrounge off","scrounged off","scrounging off",""), phrase("tax", "taxed", "taxing", ""), phrase("cheat", "cheated", "cheating", ""), phrase("defraud", "defrauded", "defrauding", ""), phrase("steal from","stolen from","stealing from",""), phrase("burgle","burgled","burgling",""), phrase("devalue","devalued","devaluing",""), phrase("rip off","ripped off","ripping off",""), phrase("hike price of","hiked price of","hiking price of",""), phrase("cover up","covered up","covering up",""), phrase("molest","molested","molesting",""), phrase("have sex with","had sex with","having sex with",""), phrase("impregnate", "impregnated", "impregnating", ""), phrase("steal the identity of","stolen the identity of","stealing the identity of",""), phrase("harm","harmed","harming",""), phrase("threaten", "threatened", "threatening", ""), phrase("blast", "blasted", "blasting", ""), phrase("bash", "bashed", "bashing", ""), phrase("destroy","destroyed","destroying",""), phrase("kill","killed", "killing",""), phrase("ruin","ruined","ruining",""), phrase("hurt","hurt", "hurting",""), phrase("contaminate","contaminated","contaminating",""), phrase("bail out","bailed out","bailing out","") ] dobjects = [ "the british people", "the middle class", "the squeezed middle", "middle britain", # Cunts "england", "hard-working families", "homeowners", "pensioners", "drivers", "taxpayers", "taxpayers' money", "unborn babies", "pregnant mothers", "house prices", "property prices", # Hahahahahahahaa "britain's farmers", "the countryside", "british justice", "the british army", "the metropolitan police", "the police", "the royal navy", "british sovereignty", "common sense and decency", "the queen", # God bless 'er "the royal family", "the church", "you", "your mortgage", "your pension", "your money", "your daughters", "your children", "your house", "your car", "your pets", "your credit rating", "your credit card", "the conservative party", # FAIL "the memory of diana", "Britain's credit rating", "Britain's swans", # This always stays "Cadbury" # iconic! ]; def match_verb_and_subject(subject,verb): if ((subject.number == 1) and (subject.person == 3)): return verb.singular else: return verb.plural def match_verb_and_tense(verb,phrase): if (verb.tense == "present"): return phrase.present elif (verb.tense == "past"): return phrase.past elif (verb.tense == "active"): return phrase.active def generate(): subject = random.choice(subjects) phrase = random.choice(transitive_phrases) verb = random.choice(auxilliary_verbs) dobject = random.choice(dobjects) sentence = [match_verb_and_subject(subject, verb), subject.word, match_verb_and_tense(verb,phrase), dobject] if (phrase.dobject != ""): sentence.append(phrase.dobject) s = " ".join(sentence).upper() return s + "?"