简体   繁体   中英

How do I make a score counter in Python?

I have this code:

def quiz():

    print("Here is a quiz to test your knowledge!")
    print()
    print("Question 1")
    print("How tall is the Eiffel Tower?")
    print("a. 350m")
    print("b. 342m")
    print("c. 324m")
    print("d. 1000ft")
    answer = input("Make your choice : ")
    if answer == "c" :
        print ("Correct!")
    if answer == "a" :
        print ("Wrong!")
    if answer == "b" :
        print ("Wrong!")
    if answer == "d" :
        print ("Wrong!")
    print()
    print("Question 2")
    print("How loud is a sonic boom?")
    print("a. 160dB")
    print("b. 175dB")
    print("c. 157dB")
    print("d. 213dB")
    answer = input("Make your choice : ")
    if answer == "d" :
        print ("Correct!")

    if answer == "a" :
        print ("Wrong!")
    if answer == "b" :
        print ("Wrong!")
    if answer == "c" :
        print ("Wrong!")
    print()
    print("Question 3")
    print("How hot is Pluto?")
    print("a. 223⁰C to -233⁰C")
    print("b. -323⁰C to -347⁰C")
    print("c. -375⁰F to -395⁰F")
    print("d. -213⁰C to -237⁰C")
    answer = input("Make your choice : ")
    if answer == "c" :
        print ("Correct!")
        score + 1
    if answer == "a" :
        print ("Wrong!")
    if answer == "b" :
        print ("Wrong!")
    if answer == "d" :
        print ("Wrong!")
    print()
    print("Question 4")
    print("How many calories in a normal Twix bar?")
    print("a. 284")
    print("b. 297")
    print("c. 314")
    print("d. 329")
    answer = input("Make your choice : ")
    if answer == "a" :
        print ("Correct!")
        score + 1
    if answer == "c" :
        print ("Wrong!")
    if answer == "b" :
        print ("Wrong!")
    if answer == "d" :
        print ("Wrong!")
    print()
    print("Question 5")
    print("How deep is Mariana Trench?")
    print("a. 12.9km")
    print("b. 11.7km")
    print("c. 12.4km")
    print("d. 11.0km")
    answer = input("Make your choice : ")
    if answer == "d" :
        print ("Correct!")
        score + 1
    if answer == "a" :
        print ("Wrong!")
    if answer == "b" :
        print ("Wrong!")
    if answer == "c" :
        print ("Wrong!")
    print()
    print("Question 6")
    print("How many states are there in the USA?")
    print("a. 50")
    print("b. 59")
    print("c. 65")
    print("d. 48")
    answer = input("Make your choice : ")
    if answer == "a" :
        print ("Correct!")
        score + 1
    if answer == "c" :
        print ("Wrong!")
    if answer == "b" :
        print ("Wrong!")
    if answer == "d" :
        print ("Wrong!")
    print()
    print("Question 7")
    print("How many balls on a snooker table?")
    print("a. 25")
    print("b. 22")
    print("c. 21")
    print("d. 19")
    answer = input("Make your choice : ")
    if answer == "b" :
        print ("Correct!")
        score + 1
    if answer == "a" :
        print ("Wrong!")
    if answer == "c" :
        print ("Wrong!")
    if answer == "d" :
        print ("Wrong!")
    print(score)

I would like to insert a score counter which would add a point every time the user gets one right and does nothing when they get one wrong. I would like it to be very simple and easy to write (I am new to Python).

How would I do this?

I know this is not part of the question, but conside using a dictionary or list to store the questions, options and answer and just loop over:

questions = {
    "How tall is the Eiffel Tower?":['a. 350m', 'b. 342m', 'c. 324m', 'd. 1000ft','a'],
    "How loud is a sonic boom?":['a. 160dB', 'b. 175dB', 'c. 157dB', 'd. 213dB', 'd']
} # 1

score = 0 # 2 
for question_number,question in enumerate(questions): # 3
    print ("Question",question_number+1) # 4
    print (question)
    for options in questions[question][:-1]: # 5
        print (options)
    user_choice = input("Make your choice : ")
    if user_choice == questions[question][-1]: # 6
        print ("Correct!")
        score += 1 #7 here's the relevant part of the question
    else: # 8
        print ("Wrong!")

print(score) #9

Explanation:

  1. question is a python dictionary , it has a key and a value , the key in this case is the question, the value is a list , in this list we have all the possible options, and in the last item the answer;
  2. Here's the score , note that it is outside the for loop , because we wan't to maintain it over all the question, just increment it if correct.
  3. in order to get the header "Question x", I've used a enumerate , it takes a iterable as argument, I've used the dictionary question, it will iterate over it's keys(the questions in it), and returns two variables, the question_number and the question .
  4. enumerator starts in the index 0, so we add 1 to it to display the first question as "Question 1" instead of "Question 0"
  5. we loop over the values of the question, the syntax is dictionary[key], the options, since we don't want to show the answer we use [-1] to remove the last item
  6. now we check if the answer is correct, if the user_choice is equal to the last item in the values of the dicionary(remember the [-1] refers to the last item).
  7. if the answer is correct we increment the score by 1
  8. else we just print "wrong"
  9. after all the questions are displayed we print the score.

You are part way there with:

if answer == "a" :
    print ("Correct!")
    score + 1

However, you need to assign the new value to score :

if answer == "a" :
    print ("Correct!")
    score = score + 1

And you need to start your function with:

score = 0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM