import random

name=input("What is your name?")
print ("Alright",name,"welcome to your maths quiz")
score=0

level_of_difficulty= input("What level of difficulty are you working at? Press 1 for low, 2 for intermediate or 3 for high")
if level_of_difficulty == 1:
    for question_num in range(1, 11):
            ops = ['+', '-', '*']
            number_1=random.randrange(1,10)
            number_2=random.randrange(1,10)
            operation = random.choice(ops)
            maths = eval(str(number_1) + operation + str(number_2))
            print('\nQuestion number: {}'.format(question_num))
            print ("The question is",number_1,operation,number_2)

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

            print("Well done you scored",score,"out of 10")
if level_of_difficulty == 2:
    for question_num in range(1, 11):
            ops = ['+', '-', '*']
            number_1=random.randrange(1,20)
            number_2=random.randrange(1,20)
            operation = random.choice(ops)
            maths = eval(str(number_1) + operation + str(number_2))
            print('\nQuestion number: {}'.format(question_num))
            print ("The question is",number_1,operation,number_2)

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

            print("Well done you scored",score,"out of 10")
if level_of_difficulty == 3:
    for question_num in range(1, 11):
            ops = ['+', '-', '*',"/"]
            number_1=random.randrange(1,20)
            number_2=random.randrange(1,20)
            operation = random.choice(ops)
            maths = eval(str(number_1) + operation + str(number_2))
            print('\nQuestion number: {}'.format(question_num))
            print ("The question is",number_1,operation,number_2)

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

    print("Well done you scored",score,"out of 10")

Pourquoi cela ne fonctionnerait-il pas? Il n'y a pas de syntaxe invalide. Je ne sais donc pas pourquoi cela ne fonctionne pas.

-2
Ibrahim 19 juil. 2015 à 11:52

3 réponses

Meilleure réponse

Vous avez

level_of_difficulty= input("What level of difficulty are you working at? Press 1 for low, 2 for intermediate or 3 for high")

if level_of_difficulty == 1:
    ...
if level_of_difficulty == 2:
    ...
if level_of_difficulty == 3:
    ...

Mais input() renvoie une chaîne, pas un int. Convertissez l'entrée en un int en modifiant

level_of_difficulty= input("What level of difficulty are you working at? Press 1 for low, 2 for intermediate or 3 for high")

À

level_of_difficulty= int(input("What level of difficulty are you working at? Press 1 for low, 2 for intermediate or 3 for high"))
4
Spikatrix 19 juil. 2015 à 09:12

La méthode input() essaie d'exécuter l'entrée de l'utilisateur sous forme de code. Il est équivalent à eval(raw_input(prompt)). Ici, vous devez utiliser name = raw_input("What is your name?").

Bien que votre question ne soit pas très claire et que je ne sache pas vraiment quel est votre problème, j'ai nettoyé votre code et cela fonctionne en Python 2:

import random

name = raw_input("What is your name?\n")
print("Alright {0} welcome to your maths quiz".format(name))
score = 0

level_of_difficulty = 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 == 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 = eval(str(number_1) + operation + str(number_2))
    print('\n*** Question {0} ***'.format(question_num))
    print("The question is {0} {1} {2}".format(number_1,
                                               operation,
                                               number_2))

    answer = int(raw_input("What is your answer: "))
    if answer == maths:
        print("Correct")
        score = score + 1
    else:
        print("Incorrect. The actual answer is {0}".format(maths))

print("Well done you scored {0} out of 10".format(score))
1
mjalkio 19 juil. 2015 à 09:30

Votre code ne s'exécute pas après avoir demandé un niveau de difficulté. Le fait est que l'entrée est une chaîne ou autre chose. vous demandez donc à python de comparer les pommes et les oranges si pomme == orange: faites ceci. ça ne marche pas.

Pour résoudre ce problème, vous devez transformer votre entrée en orange dans ce cas, un nombre entier. pour faire cette annonce int () «autour» de votre entrée. comme ça

level_of_difficulty= int(input("What level of difficulty are you working at? Press 1 for low, 2 for intermediate or 3 for high"))

Bonne chance

1
johnny2by4 19 juil. 2015 à 09:21