vendredi 24 juillet 2015

Why doesn't my definition of this function lead to the desired outcome?

Why doesn't my definition of propmt_int not work? Its original defintion was:

def prompt_int(prompt=''):
    while True:
        val = input(prompt)
        try:
            return int(val)
        except:
            print("Not a valid number, please try again")

but that didn't work either and it doesn't work when I remove the statement right at the start of my code> Im really stuck please help. here is the whole of my code:

            import random
            status = input("Are you a teacher or student? Press 1 if you are a student or 2 if you are a teacher")
            def prompt_int(prompt=''):
                while True:
                    if status == prompt_int(prompt=''):
                        val = input(prompt)
                        if val in (1,2):
                            return int(val)
                            return true
                    elif status != prompt_int(prompt=''):
                        val = input(prompt)
                        if val in (1,2,3):
                            return int(val)
                            return true
                    else:
                        print("Not a valid number, please try again")




            def get_bool_input(prompt=''):
                while True:
                    val = input(prompt).lower()
                    if val == 'yes':
                        return True
                    elif val == 'no':
                        return False
                    else:
                        print("Not a valid input (yes/no is expected) please try again")

            status = prompt_int("Are you a teacher or student? Press 1 if you are a student or 2 if you are a teacher")

            if status == "1":
                score=0
                name=input("What is your name?")
                print ("Alright",name,"welcome to your maths quiz."
                        " Remember to round all answers to 5 decimal places.")

                level_of_difficulty = int(input(("What level of difficulty are you working at?\n"
                                             "Press 1 for low, 2 for intermediate "
                                                "or 3 for high\n")))
                if level_of_difficulty not in (1,2,3):
                    sys.exit("That is not a valid level of difficulty, please try again")

                if level_of_difficulty == 3:
                    ops = ['+', '-', '*', '/']
                else:
                    ops = ['+', '-', '*']

                for question_num in range(1, 11):
                    if level_of_difficulty == 1:
                        number_1 = random.randrange(1, 10)
                        number_2 = random.randrange(1, 10)
                    else:
                        number_1 = random.randrange(1, 20)
                        number_2 = random.randrange(1, 20)

                    operation = random.choice(ops)
                    maths = round(eval(str(number_1) + operation + str(number_2)),5)
                    print('\nQuestion number: {}'.format(question_num))
                    print ("The question is",number_1,operation,number_2)

                    answer = float(input("What is your answer: "))
                    if answer == maths:
                        print("Correct")
                        score = score + 1
                    else:
                        print ("Incorrect. The actual answer is",maths)

                if score >5:
                    print("Well done you scored",score,"out of 10")
                else:
                    print("Unfortunately you only scored",score,"out of 10. Better luck next time")

                class_number = prompt_int("Before your score is saved ,are you in class 1, 2 or 3? Press the matching number")

                filename = (class_number + "txt")

                with open(filename, 'a') as f:
                    f.write("\n" + str(name) + " scored " + str(score) +  " on difficulty level " + str(level_of_difficulty + "\n"))

                with open(filename, 'a') as f:
                    f = open(filename, "r")
                    lines = [line for line in f if line.strip()]
                    f.close()
                    lines.sort()

                if get_bool_input("Do you wish to view previous results for your class"):
                    for line in lines:
                        print (line)
                else:
                    sys.exit("Thanks for taking part in the quiz, your teacher should discuss your score with you later")

            if status == "2":
                class_number = prompt_int("Which classes scores would you like to see? Press 1 for class 1, 2 for class 2 or 3 for class 3")
                filename = (class_number + "txt")
                with open(filename, 'a') as f:
                    f = open(filename, "r")
                    lines = [line for line in f if line.strip()]
                    f.close()
                    lines.sort()
                    for line in lines:
                        print (line)




Aucun commentaire:

Enregistrer un commentaire