Может кто-нибудь сказать мне, почему мой цикл Python не будет работать для создания викторины с множественным выбором? - PullRequest
0 голосов
/ 24 февраля 2019

Просто интересно, как запустить этот цикл - я думаю, что он как-то связан с переменными, но я не слишком уверен.совершенно новый для кодирования

def question1 ():

    answer1 = input ("What is the correct answer?")
        if answer1 == "B" :
            right_answer1 = True
            print ("That is correct!")
        elif answer1 == "b" :
            right_answer1 = True
            print ("That is correct!")
        elif answer1 == " b":
            right_answer1 = True
            print("That is correct!")
        elif answer1 == " B":
            right_answer1 = True
            print("That is correct!")
        else:
            right_answer1 = False
            print ("Please try again!")
    if right_answer1 != True :
        question1()

Ответы [ 5 ]

0 голосов
/ 24 февраля 2019

Я предполагаю, что вы используете Python 2.7

В Python 2 raw_input () возвращает строку, а input () пытается запустить ввод как выражение Python.

Таким образом, если вы попытаетесь передать ввод b, вы получите сообщение об ошибке:

NameError: имя 'b' не определено

Существует два решения этой проблемы:

  1. Используйте приведенный ниже фрагмент кода и введите ввод с одинарными или двойными кавычками.

    def question1 ():

    answer1 = input("What is the correct answer?")
    
    if answer1 == "B" or answer1 == " B":
        right_answer1 = True
        print ("That is correct!")
    elif answer1 == "b" or answer1 == " b":
        right_answer1 = True
        print ("That is correct!")
    else:
        right_answer1 = False
        print ("Please try again!")
    
    if right_answer1 != True :
        question1()
    

    question1 ()

  2. Используйте raw_input и вам не нужно передавать кавычки вокруг ввода, так как python преобразует его в строку для вас

заменить строку answer1 = input ("Какой правильный ответ?"? ") с

answer1 = raw_input (" Какой правильный ответ? ")

0 голосов
/ 24 февраля 2019
def question1 ():

    while True:
        answer1 = input ("What is the correct answer?")
        if (answer1.strip().lower() == 'b'):
            print("That is correct!")
            return  # or 'break'
        print("Please try again!")

question1()
0 голосов
/ 24 февраля 2019
def question():
   answer = input ("What is the correct answer?")
   if answer.upper().strip() == "B":
       print("That is correct!")
       return True
   print ("Please try again!")
   return False

while !question():
    pass
0 голосов
/ 24 февраля 2019

Я вижу, что вы очень плохо знакомы с программированием и питоном.Вы почти там, но вы сделали несколько ошибок:

1) Где петля?

Должен быть тип цикла типа for / while.Вам также необходимо указать условие запуска, увеличения и окончания цикла.Ниже приводится синтаксис цикла:

for i in range(start, end, increment):
    # Your set of statements

Для цикла while:

while condition!=True:
    # Your set of statements

2) Вы не указали правильный отступ, что очень важно в Python-3

Итак, новая программа будет выглядеть так:

def question1 ():
    right__answer1 = False
    answer1 = input ("What is the correct answer?")
    while right__answer1!=True:
        if answer1 == "B" :
            right_answer1 = True
            print ("That is correct!")
            break
        elif answer1 == "b" :
            right_answer1 = True
            print ("That is correct!")
            break
        elif answer1 == " b":
            right_answer1 = True
            print("That is correct!")
            break
        elif answer1 == " B":
            right_answer1 = True
            print("That is correct!")
            break
        else:
            right_answer1 = False
            print ("Please try again!")
question1()

Возможно, вы на самом деле имеете в виду рекурсию:

def question1 ():

    answer1 = input ("What is the correct answer?")

    if answer1 == "B" :
        right_answer1 = True
        print ("That is correct!")
    elif answer1 == "b" :
        right_answer1 = True
        print ("That is correct!")
    elif answer1 == " b":
        right_answer1 = True
        print("That is correct!")
    elif answer1 == " B":
        right_answer1 = True
        print("That is correct!")
    else:
        right_answer1 = False
        print ("Please try again!")
        question1()
question1()
0 голосов
/ 24 февраля 2019

Я считаю, что ваш желаемый код - что-то вроде этого.К вашему сведению, «цикл», на который вы ссылаетесь, называется recursion .Ваша функция рекурсивно вызывает себя всякий раз, когда вводится неправильный ответ.

def question1():

    answer1 = input("What is the correct answer?")

    if answer1 == "B":
        right_answer1 = True
        print ("That is correct!")
    elif answer1 == "b" :
        right_answer1 = True
        print ("That is correct!")
    elif answer1 == " b":
        right_answer1 = True
        print("That is correct!")
    elif answer1 == " B":
        right_answer1 = True
        print("That is correct!")
    else:
        right_answer1 = False
        print ("Please try again!")

    if right_answer1 != True :
        question1()

question1()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...