You're doing a class assignment and asking for help. Does it really make sense to argue with those offering advice?
You say "So not looking to fix something that isn't broke. Delay, although inefficient, works."
People here are saying delay() won't produce good results for what you want here. In that respect, it is broken. It's not the right tool for the job.
The problem with trying to use delay here (and anywhere) is that it blocks. When you first press the left switch and start your 2-second delay (e.g. delay(2000)), there will be 2-seconds where the Arduino is dead to the outside world. It will not recognize if you've released the switch, or if you pressed the right etc for the entire 2-second duration of the delay. Indeed, if you code it so, you might make the thing dead for 4-seconds (e.g. LED on for 2-seconds, LED off for 2-seconds --> rest of loop.) It also makes it difficult to do other timing like switch debounce.
You don't have to use this but have a look anyway; millis() based timing that doesn't block the CPU along with a few other slightly more advanced concepts.
#define BLINK_BIT 0b00000001 //bitmask flag indicating status of fast-blink
#define LEFT_BIT 0b00000010 //bitmask flag indicating status of left switch
#define SW_INTERVAL 50ul //mS switch read interval
#define DEFAULT_BLINK 2000ul //mS default/initial blink rate
#define MIN_BLINK_TIME 25ul //mS minimum value for blink time (no more /2 at this point)
const byte pinLED = LED_BUILTIN; //easy debug; use of LED mounted to board
//const byte pinLED = 6;
//const byte switchpin = 4; //? //what is this for?
const byte pinLeftWhisker = 8;
const byte pinRightWhisker = 9;
unsigned long
timeBlink;
byte
bFlags,
lastLeftWhisker,
lastRightWhisker;
void setup()
{
pinMode( pinLED, OUTPUT );
//pinMode(switchpin, INPUT); //?
pinMode( pinLeftWhisker, INPUT_PULLUP ); //see notes below about switch pin states
pinMode( pinRightWhisker, INPUT_PULLUP );
bFlags = 0;
timeBlink = DEFAULT_BLINK;
lastLeftWhisker = digitalRead( pinLeftWhisker );
lastRightWhisker = digitalRead( pinRightWhisker );
}//setup
void doBlinkFlags( void )
{
static unsigned long
timeToggle;
unsigned long
timeNow;
//get the millis count now
timeNow = millis();
//only time blinks when the left switch is pressed
//makes the initial flash timing better
if( !(bFlags & LEFT_BIT) )
{
//if button is not pressed, reset the toggle time and return
timeToggle = timeNow;
bFlags |= BLINK_BIT; //makes sure LED turns on when switch closes
return;
}
//if left is pressed, check the time; is it time to toggle the flag bit?
if( timeNow - timeToggle >= timeBlink )
{
//yes; toggle the blink flag
bFlags ^= BLINK_BIT;
//and save the time for the next compare
timeToggle = timeNow;
}//if
}//doBlinkFlags
void pollSwitches( void )
{
static unsigned long
timeSwitch;
unsigned long
timeNow;
byte
swNow;
//get the millis count
timeNow = millis();
//time to read the switches?
if( timeNow - timeSwitch < SW_INTERVAL )
return; //no just return
//yes; save the time for the next polling
timeSwitch = timeNow;
//read the left whisker
swNow = digitalRead( pinLeftWhisker );
//if not the same as the last time the switch was read...
if( swNow != lastLeftWhisker )
{
//switch was pushed or released; save the new value for next compare
lastLeftWhisker = swNow;
//is is high or low now?
if( swNow == LOW ) //assume NO-MOM that, when pressed, grounds pin
bFlags |= LEFT_BIT; //if low now, switch is pressed so set the left flag
else
{
//when the switch is released, we...
bFlags &= ~LEFT_BIT; //...clear the left switch flag and...
//...if we're above the minimum blink time, divide the blink timer by two
if( timeBlink > MIN_BLINK_TIME )
timeBlink /= 2;
}//else
}//if
//if right is pressed, reset the blink timer
swNow = digitalRead( pinRightWhisker );
if( swNow != lastRightWhisker )
{
lastRightWhisker = swNow;
if( swNow == LOW ) //assume NO-MOM that, when pressed, grounds pin
timeBlink = DEFAULT_BLINK;
}//if
}//pollSwitches
void loop()
{
//every loop check the blink flags and switches
//timing logic in each function determines when actions happen
doBlinkFlags();
pollSwitches();
//LEFT_BIT is set when left whisker switch is closed; if closed, enable LED blinking
if( bFlags & LEFT_BIT )
digitalWrite( pinLED, (bFlags & BLINK_BIT) ? HIGH:LOW );
else
digitalWrite( pinLED, LOW ); //switch is open; turn the LED off.
}//loop