Почему это продолжается python 3 - PullRequest
0 голосов
/ 05 августа 2020
user_grade=0
users_name=input("What is your name \n")
import random

count=1
while count<=10:
  ops = ["+" , "-", "*", "/"]
  num1 = random.randint(0,50)
  num2 = random.randint(0,20)
  operation = random.choice(ops)


  math=(num1, operation, num2)
  user_answer=int(input("What is " + str(math) + "\n"))
  if user_answer==num1 + num2:
    print("Correct answer")
    user_grade+=1

  if user_answer==num1 - num2:
    print("Correct answer")
    user_grade+=1

  if user_answer==num1 * num2:
    print("Correct answer")
    user_grade+=1

  if user_answer==num1 / num2:
    print("Correct answer")
    user_grade+=1
  else:
    print("incorrect or invalid")
  count+=1

print("You got ", user_grade ,"/10")

это результат:

What is your name 
Ibad
What is (39, '*', 2)
78
Correct answer
incorrect or invalid

почему неправильная часть продолжает повторяться

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Вы используете if, когда вы должны использовать elif. elif создает блок операторов, выходящий при первом совпадении или True. Использование отдельных операторов if будет проверять все условий, что приведет к ошибке, даже если их нет.

user_grade=0
users_name=input("What is your name \n")
import random

count=1
while count<=10:
  ops = ["+" , "-", "*", "/"]
  num1 = random.randint(0,50)
  num2 = random.randint(0,20)
  operation = random.choice(ops)


  math=(num1, operation, num2)
  user_answer=int(input("What is " + str(math) + "\n"))
  if user_answer==num1 + num2:
    print("Correct answer")
    user_grade+=1

  elif user_answer==num1 - num2:
    print("Correct answer")
    user_grade+=1

  elif user_answer==num1 * num2:
    print("Correct answer")
    user_grade+=1

  elif user_answer==num1 / num2:
    print("Correct answer")
    user_grade+=1
  else:
    print("incorrect or invalid")
  count+=1

print("You got ", user_grade ,"/10")
0 голосов
/ 05 августа 2020

используйте оператор or вместо множества if

if((user_answer==num1 + num2) or (user_answer==num1 - num2) or (user_answer==num1 * num2) or (user_answer==num1 / num2)):
   user_grade+=1
else:
   print('Incorrect or invalid)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...