#python
Вопрос:
Будучи абсолютным новичком, я столкнулся с некоторыми проблемами в своей простой математической викторине на python.
Первый вопрос: В моей программе ответ застрял только с вариантом d, я хочу каждый раз менять правильный вариант между выбором a-d.
Вторая проблема: я объявляю переменную «оценка» и пытаюсь увеличить ее значение при каждом правильном ответе, но она не обновляется.
Третий вопрос : Я хочу прояснить предыдущий вопрос о выборе правильного варианта и задать новый вопрос.
Мой код таков :
import random
def myFunction():
score=0
num1= random.randint(0,1000)
num2= random.randint(1,1000)
num2=num1
if num1==num2:
num2=num2 random.randint(0,50)
print(num1, " " , num2, "= ?")
result=num1 num2
option1=result random.randint(1,25)
option2=result random.randint(1,25)
option3=result random.randint(1,25)
d=result
print("(a)", option1)
print("(b)", option2)
print("(c)", option3)
print("(d)", result)
value= input("Select the correct option n Answer:")
if value=="d":
print("Correct Answer...!!")
score =1 #update score
myFunction()
else:
result="d"
print("Wrong Answer, Correct option is ","(",result,")")
print("Your Score is : ", score)
exit()
myFunction()
Комментарии:
1. по одному вопросу за раз, пожалуйста
2. Непонятно, чего вы здесь пытаетесь достичь. Вы могли бы сначала объяснить логику программы и показать, где вы застряли. (Узнайте, как задать вопрос…)
3.
score
сбрасывается каждый разmyFunction()
, когда вызывается4. Почему
num2=num1
следуетif num1==num2:
ближе к началу программы (т. Е. Условное всегда будет истинным, так как вы установили num2 в num1)?5. Можете ли вы объяснить, чего вы пытаетесь достичь, это непонятно. Объясните основную цель вашей программы и где она не работает, чтобы мы могли вам помочь.
Ответ №1:
Этот код работает со следующими изменениями:
- Вы должны использовать цикл while для итеративного получения ответа от пользователя (в противном случае вы в конечном итоге превысите глубину рекурсии).
- Это продолжается с неправильными ответами
- Останавливается на первом правильном ответе
- Если вы вводите пустую строку, она также останавливается (т. Е. предоставляет пользователю возможность выйти из программы).
Код
import platform
import os
import sys
import random
def clear():
'''
Clears console
'''
system_ = platform.system()
print('system_', system_)
if system_ == 'Windows':
os.system('cls')
else:
# Linux or Mac
os.system('clear')
def myFunction():
score=0
# Use while loop rather than recusively calling function
while True:
# Select two numbers
num1= random.randint(0,1000)
num2= random.randint(1,1000)
if num1==num2:
num2=num2 random.randint(0,50)
print('clear the screen')
clear() # Clear console
print(num1, " " , num2, "= ?")
result = num1 num2 # the answer for sum
option1 = result random.randint(1,25)
option2 = result random.randint(1,25)
option3 = result random.randint(1,25)
# options for sum
options = [option1, option2, option3, result]
# Place options in random order
random.shuffle(options)
choices = "abcd"
for choice, option in zip(choices, options):
print(f"{choice} {option}")
value= input("Select the correct option (or blank line to quit) n Answer:")
while value and value not in choices: # checks for blank line and if entry in choices
print("Select letter from ", *choices)
value= input("Select the correct option (or blank line to quitn Answer:")
if value is None:
# Blank line
print(f'Final score was {score}')
break # done with while loop
index = choices.index(value)
if options[index] == result:
print("Correct Answer...!!")
score = 1 #update score
print(f"Your Score is : {score}")
else:
print(f"Wrong Answer, Correct option is ({result})")
print(f"Your Score is : {score}")
myFunction()
Ответ №2:
Я не знаю, как вы хотите, чтобы ваш код работал. Но я отредактировал ваш код, как показано ниже. Как только вы ввели неправильный ответ, вы выйдете из викторины.
import random
def myFunction():
global score
num1= random.randint(0,1000)
num2= random.randint(1,1000)
# num2=num1
if num1==num2:
num2=num2 random.randint(0,50)
print(num1, " " , num2, "= ?")
result=num1 num2
option1=result random.randint(1,25)
option2=result random.randint(1,25)
option3=result random.randint(1,25)
d=result
choice = [option1,option2,option3,result]
random.shuffle(choice)
print("(a)", choice[0])
print("(b)", choice[1])
print("(c)", choice[2])
print("(d)", choice[3])
value= input("Select the correct option n Answer:")
if (value == "a" and d == choice[0]) or (value == "b" and d == choice[1]) or (value == "c" and d == choice[2]) or (value == "d" and d == choice[3]):
print("Correct Answer...!!")
score =1 #update score
else:
result= d
print("Wrong Answer, Correct option is ","(",result,")")
print("Your Score is : ", score)
exit()
score = 0
while True:
myFunction()
print("Score : ", score)enter code here
Ответ №3:
Этот код сначала сохраняет ответ в случайном варианте, а затем переменной ответа присваивается значение параметра, т. е. a,b,c или d. Я добавил переменную оценки в качестве параметра в функцию, и каждый раз, когда дается правильный ответ, значение параметра будет установлено равным баллу
import random
def myFunction(score=0):
num1 = random.randint(0,1000)
num2 = random.randint(1,1000)
if num1==num2:
num2=num2 random.randint(0,50)
print(num1, " " , num2, "= ?")
result=num1 num2
option1=result random.randint(1,25)
option2=result random.randint(1,25)
option3=result random.randint(1,25)
option4=result random.randint(1,25)
answer = random.randint(1,5)
if answer==1:
option1 = result
answer = 'a'
if answer==2:
option2 = result
answer = 'b'
if answer==3:
option3 = result
answer = 'c'
if answer==4:
option4 = result
answer = 'd'
print("(a)", option1)
print("(b)", option2)
print("(c)", option3)
print("(d)", option4)
value= input("Select the correct option n Answer:")
if value==answer:
print("Correct Answer...!!")
score = score 1 #update score
myFunction(score)
else:
result=answer
print("Wrong Answer, Correct option is ","(",result,")")
print("Your Score is : ", score)
exit()
myFunction()
Комментарии:
1. Пожалуйста, объясните, что делает ваш код для решения проблем.
2. Сначала он сохраняет ответ в случайном варианте, а затем переменной ответа присваивается значение параметра, т. е. a,b,c или d. Я добавил переменную оценки в качестве параметра в функцию, и каждый раз, когда дается правильный ответ, значение параметра будет равно баллу.
3. Спасибо за помощь… в коде есть небольшая проблема, по первым двум или трем вопросам все идет гладко, но позже в коде появляется ошибка..