Skip to content

Instantly share code, notes, and snippets.

@rgardner
Last active October 25, 2015 16:45
Show Gist options
  • Save rgardner/be8542c6475096cc6802 to your computer and use it in GitHub Desktop.
Save rgardner/be8542c6475096cc6802 to your computer and use it in GitHub Desktop.

Step 1: Print!

print('Hello Nicole!')

Step 2: find events in email with open, variables, list

with open('email.txt', 'r') as email:
    lines = email.readlines()

events = []
for line in lines:
    if line.startswith('['):
        events.append(line)

for event in events:
    print(event)

Step 3: Categorizing events based on Broome credit if/then

with open('email.txt', 'r') as email:
    lines = email.readlines()

events = []
for line in lines:
    if line.startswith('['):
        events.append(line)

with open('BroomeCodes.txt', 'w') as output:
    for event in events:
        if 'Stream' in event:
            output.write('Stream, {}'.format(event))
        elif 'FFiR' in event:
            output.write('FFiR, {}'.format(event))
        elif 'BEAST' in event:
            output.write('BEAST, {}'.format(event))
        elif 'Floor' in event:
            output.write('Floor, {}'.format(event))
        elif 'Service' in event:
            output.write('Service, {}'.format(event))
        elif 'All Hall' in event:
            output.write('All Hall, {}'.format(event))
        else:
            output.write('Other, {}'.format(event))

Step 4: Turn into a function functions

def add_email():
    with open('email.txt', 'r') as email:
        lines = email.readlines()

    events = []
    for line in lines:
        if line.startswith('['):
            events.append(line)

    with open('BroomeCodes.txt', 'w') as output:
        for event in events:
            if 'Stream' in event:
                output.write('Stream, {}'.format(event))
            elif 'FFiR' in event:
                output.write('FFiR, {}'.format(event))
            elif 'BEAST' in event:
                output.write('BEAST, {}'.format(event))
            elif 'Floor' in event:
                output.write('Floor, {}'.format(event))
            elif 'Service' in event:
                output.write('Service, {}'.format(event))
            elif 'All Hall' in event:
                output.write('All Hall, {}'.format(event))
            else:
                output.write('Other, {}'.format(event))

add_email()

Step 5: Add log new attendance feature input

def add_email():
    with open('email.txt', 'r') as email:
        lines = email.readlines()

    events = []
    for line in lines:
        if line.startswith('['):
            events.append(line)

    with open('BroomeCodes.txt', 'w') as output:
        for event in events:
            if 'Stream' in event:
                output.write('Stream, {}'.format(event))
            elif 'FFiR' in event:
                output.write('FFiR, {}'.format(event))
            elif 'BEAST' in event:
                output.write('BEAST, {}'.format(event))
            elif 'Floor' in event:
                output.write('Floor, {}'.format(event))
            elif 'Service' in event:
                output.write('Service, {}'.format(event))
            elif 'All Hall' in event:
                output.write('All Hall, {}'.format(event))
            else:
                output.write('Other, {}'.format(event))


def log_attendance():
    with open('BroomeCodes.txt', 'a+') as events_file:
        events = events_file.readlines()

    for i, event in enumerate(events):
        print('{} - {}'.format(i, event))

    response = input('Please enter the corresponding event number: ')
    event_index = int(response)
    if event_index < len(events):
        event = events[event_index]
        with open('nicole_broome.txt', 'a+') as nicole_stats:
            nicole_stats.write(event)

    else:
        print('Invalid number')


add_email()
log_attendance()

Step 6: Putting them together into the menu while True

def add_email():
    with open('email.txt', 'r') as email:
        lines = email.readlines()
    events = []
    for line in lines:
        if line.startswith('['):
            events.append(line)

    with open('BroomeCodes.txt', 'w') as output:
        for event in events:
            if 'Stream' in event:
                output.write('Stream, {}'.format(event))
            elif 'FFiR' in event:
                output.write('FFiR, {}'.format(event))
            elif 'BEAST' in event:
                output.write('BEAST, {}'.format(event))
            elif 'Floor' in event:
                output.write('Floor, {}'.format(event))
            elif 'Service' in event:
                output.write('Service, {}'.format(event))
            elif 'All Hall' in event:
                output.write('All Hall, {}'.format(event))
            else:
                output.write('Other, {}'.format(event))


def log_attendance():
    with open('BroomeCodes.txt', 'a+') as events_file:
        events = events_file.readlines()

    for i, event in enumerate(events):
        print('{} - {}'.format(i, event))

    response = input('Please enter the corresponding event number: ')
    event_index = int(response)
    if event_index < len(events):
        event = events[event_index]
        with open('nicole_broome.txt', 'a+') as nicole_stats:
            nicole_stats.write(event)
    else:
        print('Invalid number') 


# while True:
#    print('Broome Main Menu')
#    print('1 - Add New Email')
#    print('2 - Log New Attendance')
#    print('-- enter the corresponding number of the action you wish to perform --')

#    response = input()
#    if response[0] == '1':
#        add_email()

#    elif response[0] == '2':
#        log_attendance()

#    else:
#        print('Unrecognized Number')
#        print('Plase Try Again -- Meow')

Step 7: Add stats functionality import

import collections


def add_email():
    with open('email.txt', 'r') as email:
        lines = email.readlines()
    events = []
    for line in lines:
        if line.startswith('['):
            events.append(line)

    with open('BroomeCodes.txt', 'w') as output:
        for event in events:
            if 'Stream' in event:
                output.write('Stream, {}'.format(event))
            elif 'FFiR' in event:
                output.write('FFiR, {}'.format(event))
            elif 'BEAST' in event:
                output.write('BEAST, {}'.format(event))
            elif 'Floor' in event:
                output.write('Floor, {}'.format(event))
            elif 'Service' in event:
                output.write('Service, {}'.format(event))
            elif 'All Hall' in event:
                output.write('All Hall, {}'.format(event))
            else:
                output.write('Other, {}'.format(event))


def log_attendance():
    with open('BroomeCodes.txt', 'a+') as events_file:
        events = events_file.readlines()

    for i, event in enumerate(events):
        print('{} - {}'.format(i, event))

    response = input('Please enter the corresponding event number: ')
    event_index = int(response)
    if event_index < len(events):
        event = events[event_index]
        with open('nicole_broome.txt', 'a+') as nicole_stats:
            nicole_stats.write(event)
    else:
        print('Invalid number') 


# def my_stats():
#    stats = collections.defaultdict(int)
#    with open('nicole_broome.txt', 'r+') as nicole_stats:
#        for line in nicole_stats.readlines():
#            stream_type = line.split(',')[0]
#            stats[stream_type] += 1

#    for event_type, count in stats.items():
#        print('{} - {}'.format(event_type, count))


while True:
    print('Broome Main Menu')
    print('1 - Add New Email')
    print('2 - Log New Attendance')
    # print('3 - Check my stats')
    print('-- enter the corresponding number of the action you wish to perform --')

    response = input()
    if response[0] == '1':
        add_email()

    elif response[0] == '2':
        log_attendance()

#    elif response[0] == '3':
#        my_stats()

    else:
        print('Unrecognized Number')
        print('Plase Try Again -- Meow')

Step 8: Add return to main menu functionality and quit

import collections


def add_email():
    print('-- to return home type main menu --')
    response = input('say yes to parse events from email.txt')
    if 'main menu' in response.lower():
        return

    if 'y' in response.lower():
        with open('email.txt', 'r') as email:
            lines = email.readlines()

        events = []
        for line in lines:
            if line.startswith('['):
                events.append(line)

        with open('BroomeCodes.txt', 'w') as output:
            for event in events:
                if 'Stream' in event:
                    output.write('Stream, {}'.format(event))
                elif 'FFiR' in event:
                    output.write('FFiR, {}'.format(event))
                elif 'BEAST' in event:
                    output.write('BEAST, {}'.format(event))
                elif 'Floor' in event:
                    output.write('Floor, {}'.format(event))
                elif 'Service' in event:
                    output.write('Service, {}'.format(event))
                elif 'All Hall' in event:
                    output.write('All Hall, {}'.format(event))
                else:
                    output.write('Other, {}'.format(event))


def log_attendance():
    with open('BroomeCodes.txt', 'a+') as events_file:
        events = events_file.readlines()

    for i, event in enumerate(events):
        print('{} - {}'.format(i, event))

    print('-- to return home type main menu --')
    response = input('Please enter the corresponding event number: ')
    if 'main menu' in response.lower():
        return

    event_index = int(response)
    if event_index < len(events):
        event = events[event_index]
        with open('nicole_broome.txt', 'a+') as nicole_stats:
            nicole_stats.write(event)
    else:
        print('Invalid number') 


def my_stats():
    stats = collections.defaultdict(int)
    with open('nicole_broome.txt', 'r+') as nicole_stats:
        for line in nicole_stats.readlines():
            stream_type = line.split(',')[0]
            stats[stream_type] += 1

    for event_type, count in stats.items():
        print('{} - {}'.format(event_type, count))


while True:
    print('Broome Main Menu')
    print('1 - Add New Email')
    print('2 - Log New Attendance')
    print('3 - Check my stats')
    print('4 - Quit')
    print('-- enter the corresponding number of the action you wish to perform --')
    print('-- to return home type main menu --')

    response = input()
    if response[0] == '1':
        add_email()

    elif response[0] == '2':
        log_attendance()

    elif response[0] == '3':
        my_stats()

    elif response[0] == '4':
        print('Thanks Nicole.')
        break

    else:
        print('Unrecognized Number')
        print('Please Try Again -- Meow')

Step 9: Minor corrections to make useable beyond today

import collections
import os.path


def add_email():
    print('-- to return home type main menu --')
    if 'main menu' in response.lower():
        continue

    elif 'y' in response.lower():
        with open('email.txt', 'r') as email:
            lines = email.readlines()
        events = []
        for line in lines:
            if line.startswith('['):
                events.append(line)

        with open('BroomeCodes.txt', 'a+') as output:
            for event in events:
                if 'Stream' in event:
                    output.write('Stream, {}'.format(event))
                elif 'FFiR' in event:
                    output.write('FFiR, {}'.format(event))
                elif 'BEAST' in event:
                    output.write('BEAST, {}'.format(event))
                elif 'Floor' in event:
                    output.write('Floor, {}'.format(event))
                elif 'Service' in event:
                    output.write('Service, {}'.format(event))
                elif 'All Hall' in event:
                    output.write('All Hall, {}'.format(event))
                else:
                    output.write('Other, {}'.format(event))

        with open('BroomeCodes.txt', 'r') as infile:
            events = infile.readlines()


def log_attendance():
    with open('BroomeCodes.txt', 'a+') as events_file:
        events = events_file.readlines()

    for i, event in enumerate(events):
        print('{} - {}'.format(i, event))

    print('-- to return home type main menu --')
    response = input('Please enter the corresponding event number: ')
    if 'main menu' in response.lower():
        continue

    event_index = int(response)
    if event_index < len(events):
        event = events[event_index]
        with open('nicole_broome.txt', 'a+') as nicole_stats:
            nicole_stats.write(event)
    else:
        print('Invalid number') 


def my_stats():
    stats = collections.defaultdict(int)
    if not os.path.isfile('nicole_broome.txt'):
        print('No events logged yet. Please log an event first')
        continue

    with open('nicole_broome.txt', 'r+') as nicole_stats:
        for line in nicole_stats.readlines():
            stream_type = line.split(',')[0]
            stats[stream_type] += 1

    for event_type, count in stats.items():
        print('{} - {}'.format(event_type, count))


while True:
    print('Broome Main Menu')
    print('1 - Add New Email')
    print('2 - Log New Attendance')
    print('3 - Check my stats')
    print('4 - Quit')
    print('-- enter the corresponding number of the action you wish to perform --')
    print('-- to return home type main menu --')

    response = input()
    if response[0] == '1':
        add_email()

    elif response[0] == '2':
        log_attendance()

    elif response[0] == '3':
        my_stats()

    elif response[0] == '4':
        print('Thanks Nicole.')
        break

    else:
        print('Unrecognized Number')
        print('Please Try Again -- Meow')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment