2015-10-22 4 views
2

Итак, я должен разработать базовую викторину, и на данный момент это довольно просто. По существу, у меня есть 10 вопросов, и я включил систему подсчета очков, и мне удалось создать процентную систему.Python quiz issue

Вот мой код:

# Quiz Game 

import random 
import sys 



score = 0 # -> initial score 
print("Your score is currently " + str(score)) 

qa = [('In which Australian state was the highest temperature of 53 deg C recorded? ', 'Queensland'), 
     ('What animal is featured on the 2c coin? ', 'Frilled neck lizard'), 
     ('What Australian company is the largest surfwear manufacturer? ' , 'Quicksilver'), 
     ('How many ships were in the First Fleet? ', '11'), 
     ('In what year was decimal currency introduced in Australia? ', '1966'), 
     ('What was Sir Donald Bradman’s batting average? ', '99.94'), 
     ('How much of Australia is classified as desert A) 8% B) 16% C) 25% D) 35% ', 'D'), 
     ('On which Australian decimal banknote did a portrait of Henry Lawson appear? A) $5 B) $10 C) $20 D) $50 E) $100 ','B'), 
     ('True or False, Bathurst is held at Mt. Panome? ', 'False'), 
     ("Who was Australia's former F1 driver to Daniel Ricciardo? ", 'Mark Webber')] 

random.shuffle(qa) 

for q,a in qa: 
    user_answer = input(q) 
    if user_answer.lower() == a.lower(): 
# -> determining if the answer is correct or not 
    print("Correct!") 
    score = score+1 
    print('Your score is currently ' + str(score)) # -> scoring system 
    print ("Your Percentage is: ") 
    print((score/10)*100) # -> this is the percentage calculation 
    if score==2: 
    print('Congratualtions, you have beaten the quiz') 


    else: 
    print("Incorrect!") 
    print("The answer is " + a) 

Мой текущий вопрос я не уверен в том, как я могу сделать следующее: 1) Если пользователь получает 7 правильных ответов, бросить рано и отобразить сообщение победителя , 2) Если пользователь получает 3 неверных ответа, закройте их раньше и покажите сообщение проигравшего.

Как это сделать? Я довольно новичок в python и не использовал его в то время, поэтому я немного ржавый. Мне нужно держать эту платформу, но любые дополнения, о которых вы, ребята, думаете, были бы очень благодарны.

Благодарим вас за продвижение.

+0

Я даю вам +1 просто потому, что я люблю мелочь. –

ответ

2

Вот несколько псевдокодов, которые помогут вам начать работу. У вас в принципе есть правильная идея.

score = 0 
incorrect = 0 
for q,a in qa: 
    user_answer = input(q) 
    if user_answer.lower() == a.lower(): 
     score += 1 
    else: 
     incorrect += 1 

    if score == 7: 
     print('some message') 
     break 
    if incorrect == 3: 
     print('some message') 
     break 
+0

Я пробовал это @Pushkin, однако это не сработало, я получил синтаксическую ошибку из-за перерывов. –

+0

Что конкретно это за ошибка? – pushkin

+0

Он просто говорит о синтаксической ошибке? –

0

Вы должны иметь время цикла, который проверяет одно из ваших условий:

import random 
import sys 

# qa = [...] 

random.shuffle(qa) 

correct = 0 
incorrect = 0 

while correct != 3 or incorrect != 7: 
    for q,a in qa: 
     print('Your current score is: {}'.format(correct)) 
     print('Your percentage is: {}'.format((correct/10)*100)) 
     user_answer = input(q) 
     if user_answer.lower() == a.lower(): 
      correct +=1 
      print('Correct!') 
     else: 
      incorrect += 1 
      print('Incorrect! The correct answer is {}'.format(a)) 

if correct == 3: 
    print('You won!') 
if incorrect == 7: 
    print('You lose!') 

# End of code 
+0

Где это происходит в моем действительном коде, когда я пытаюсь адаптировать это в свой код, он не работает. @Burhan Khalid –

+0

Надеюсь, что редактирование помогает. –