繁体   English   中英

有人能告诉我为什么我的 python 循环不能用于创建多项选择测验吗?

[英]Can someone tell me why my python loop won't work for creating a multiple choice quiz?

只是想知道如何让这个循环运行 - 我认为它与变量有关,但我不太确定。 全新的编码

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()

我相信你想要的代码是这样的。 仅供参考,您所指的“循环”称为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()
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

我假设您使用的是 Python 2.7

在 Python 2 中,raw_input() 返回一个字符串,而 input() 尝试将输入作为 Python 表达式运行。

所以如果你尝试传递输入 b 会抛出一个错误说

NameError: 名称 'b' 未定义

这个问题有两种解决方案:

  1. 使用下面的代码片段并使用单引号或双引号传递输入。

    定义问题1():

     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()

    问题 1()

  2. 使用 raw_input 并且您不需要在输入周围传递引号,因为python会为您将其转换为字符串

将第 answer1 = input("正确答案是什么?") 替换为

answer1 = raw_input("正确答案是什么?")

我看到您对编程和 Python 非常陌生。 你快到了,但你犯了一些错误:

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()
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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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