循环python循环

时间:2015-11-28 17:40:05

标签: python

有没有办法在代码中添加第二个循环。所以问题是创建一个我已经完成的测验,但是在最后一个小时我试图添加第二个循环,所以测验会做三次:

import random
score = 0
questions = 0
loop = 0
classnumber = ("1", "2", "3")
name = input("Enter Your Username: ")
print("Hello, " + name + ". Welcome to the Arithmetic Quiz")

classno = input("What class are you in?")
while classno not in classnumber:
    print(
        "Enter a valid class. The classes you could be in are 1, 2 or 3.")
    classno = input("What class are you in?")
while questions < 10:
    for i in range(10):
        number1 = random.randint(1, 10)
        number2 = random.randint(1, 10)
        op = random.choice("*-+")
        multiply = number1*number2
        subtract = number1-number2
        addition = number1+number2

        if op == "-":
            print("Please enter your answer.")
            questions += 1
            print(" Question", questions, "/10")
            uinput = input(str(number1)+" - "+str(number2)+"=")
            if uinput == str(subtract):
                score += 1
                print("Correct, your score is: ", score,)
            else:
                print("Incorrect, the answer is: " + str(subtract))
                score += 0

        if op == "+":
            print("Please enter your answer.")
            questions += 1
            print(" Question", questions, "/10")
            uinput = input(str(number1)+" + "+str(number2)+"=")
            if uinput == str(addition):
                score += 1
                print("  Correct, your score is: ", score,)
            else:
                print("  Incorrect, the answer is: " + str(addition))
                score += 0

        if op == "*":
            print("Please enter your answer.")
            questions += 1
            print(" Question", questions, "/10")
            uinput = input(str(number1)+" * "+str(number2)+"=")
            if uinput == str(multiply):
                score += 1
                print("  Correct, your score is: ", score,)
            else:
                print("  Incorrect, the answer is: " + str(multiply))
                score += 0

2 个答案:

答案 0 :(得分:0)

如果你希望整个事情运行3次,那么将 for i in xrange(3):放在测验的第一行之上,然后将其余的代码缩进到循环中。如果那是你真正想要的。祝你好运!

答案 1 :(得分:0)

首先,请考虑在代码中使用函数。功能使一切更整洁,功能有助于使代码可重用。

其次,有很多领域的代码是多余的。它在点上执行不必要的检查,并且可以重新排列代码的几个部分以减少总长度并提高可读性。

尽管如此,这里是您的代码的修订版本,其中包含一些建议:

import random

def RunQuiz():
    name = input("Enter Your Username: ")
    print("Hello, " + name + ". Welcome to the Arithmetic Quiz")

    score = 0
    questions = 0
    loop = 0
    classnumber = ("1", "2", "3")
    classno = input("What class are you in?")
    while classno not in classnumber:
        print("Enter a valid class. The classes you could be in are 1, 2 or 3.")
        classno = input("What class are you in?\n>>> ")
    # End while input

    # Run the 10 question quiz
    for questions in range(1,11):
        number1 = random.randint(1, 10)
        number2 = random.randint(1, 10)
        op = random.choice("*-+")
        multiply = number1*number2
        subtract = number1-number2
        addition = number1+number2

        print("Please enter your answer.")
        print(" Question" + str(questions) "/10")
        if( op == "-"):
            # Subtraction
            uinput = input(str(number1)+" - "+str(number2)+"=")
            # Make it an int for proper comparison
            uinput = int(uinput)
            if uinput == subtract:
                score += 1
                print("Correct, your score is: %d" %(score,))
            else:
                print("Incorrect, the answer is: " + str(subtract))
                score += 0
        elif( op == "+"):
            # Addition
            uinput = input(str(number1)+" + "+str(number2)+"=")
            uinput = int(uinput)
            if uinput == addition:
                score += 1
                print("  Correct, your score is: %d" % (score,))
            else:
                print("  Incorrect, the answer is: " + str(addition))
                score += 0
        elif( op == "*" ):
            # Multiplication
            uinput = input(str(number1)+" * "+str(number2)+"=")
            uinput = int(uinput)
            if uinput == multiply:
                score += 1
                print("  Correct, your score is: %d" % (score,))
            else:
                print("  Incorrect, the answer is: " + str(multiply))
                score += 0
        # End if( op )
    # End For 10 questions
    print("\nFinal Score: %d/10" % (score,))
# End RunQuiz()

def main():
    # Run the quiz 10 times
    for RunCount in range(3):
        print("Running quiz #%d\n" % (RunCount,))
        RunQuiz()
    # End For
# End main

# Call main on script execution
main()

显然,您可以重新排列代码以满足您的需求。 (例如,我不知道您是否希望每次都输入姓名和班级号码。)