class KeySigQuestion(object):
    def __init__(self, aKey=None):
        if aKey is None:
            self.itsKey = Key()
        else:
            self.itsKey = Key(aKey)

        self.majorKeyName = self.itsKey.key[0]

    def ask(self):
        choice = []
        choice.append(self.givenKeyGiveAccidentals)
        choice.append(self.givenSignatureGiveKey)
        choice.append(self.givenAccidentalsGiveKey)
        return random.choice(choice)()

    def givenKeyGiveAccidentals(self):
        self.q = "What's the key signature of " + self.majorKeyName + "? "
        self.correctAns = self.itsKey.textual_key_signature()
        self.a = my_input(self.q).strip()
        result = (self.a == self.correctAns)
        
        return result
    
    def givenSignatureGiveKey(self):
        self.q = "What key has " + self.itsKey.textual_key_signature() + "? "
        self.correctAns = self.majorKeyName
        self.a = my_input(self.q).strip()
        result = (self.a == self.correctAns)
        
        return result

    def givenAccidentalsGiveKey(self):
        self.q = "What key has " + ", ".join(self.itsKey.accidentals()) + "? "
        self.correctAns = self.majorKeyName
        self.a = my_input(self.q).strip()
        result = (self.a == self.correctAns)
        
        return result