I really need help, this is my code below and i wa

2019-08-12 16:02发布

问题:

import random
score = int(0)

q1 = ("Work out the answer. 45 + 46 = ")
q2 = ("Kai buys a pair of shoes for £31 and a shirt for £67. Altogether, he spends £")
q3 = ("Work out the answer. 68 - 29 = ")
q4 = ("A bike normally costs £260. Its price is reduced in a sale by £90. The sale price of the bike is ")
q5 = ("Work out the answer. 32 x 30 = ")
q6 = ("A box holds 22 apples. The total number of apples in 20 boxes are ")
q7 = ("Work out the answer. 70 x 7 = ")
q8 = ("For a school show, 22 chairs are arranged equally in 30 rows. The total number of chairs is ")
q9 = ("A function machine changes 49 to 98 and changes 26 to '?'. The number in the question mark is ")
q10 = ("What number fills the gap? 35 x ? = 105. The number is ")
question = [
(q1, "91"),
(q2, "98"),
(q3, "39"),
(q4, "170"),
(q5, "960"),
(q6, "440"),
(q7, "490"),
(q8, "660"),
(q9, "52"),
(q10, "3") 
]

comments = ["Correct, you get one point, onto the next question", "At least I'm not the only smart one around here",
"Well done", "You must be really smart", "Some people have actually failed at that question", 
"Congratulations", "Good work I guess...", "You actually got that right?!"]

random.shuffle(question)
for question, correctanswer in question:
answer = input (question + "")
if answer == correctanswer:
    correctA = 1

random.shuffle(comments)
if correctA == 1:
    print(comments[random.randrange(len(comments))])
    score = score + int(1)
    print("Your current score is " + str(score))
else:
    print("Wrong, the Correct answer is " + correctanswer)
    score = score - int(1)
    print("Your current score is " + str(score))

This is updated version and there are no syntax errors so while it does now fix most of the errors, two errors remain. 1) After the user has inputted an answer, nothing appears, not even the score prints. 2)The comment only appears after every question has been answered. How do i fix both of these problems?

回答1:

One way to choose a random element in a sequence is too use the choice function in the random library.

import random
a = [1,2,3]
random.choice(a)
# this chooses a random element in the list a


回答2:

As was suggested, just put all the comments in a list as strings. To print a random comment, a random number between 0 and the length of the list is chosen as the index of the element that is printed. Run this program a few times to see it demonstrated.

import random

comments = ["Correct, you get one point, onto the next question", "At least I'm not the only smart one around here",
    "Well done", "You must be really smart", "Some people have actually failed at that question", 
    "Congratulations", "Good work I guess...", "You actually got that right?!"]

print comments[random.randrange(len(comments))]


回答3:

Here is the bug: If the answer is correct, you are creating a list.. but in creating it, you use (and execute) the function "print", which in turn prints out your "correct" statement for all of the entries.

ie. Remove the print function from all of the list entries, and just print one of the result set using the random.choice function (as others have suggested).