For 循环在停止之前总是运行 2 次

我正在尝试将一个非常基本的数学程序放在一起。下面的函数以前工作过,但现在 for 循环总是在函数停止之前运行 2 次完整迭代。


它应该只运行 10 次。


我尝试了几种缩进和 for / while 循环以及 range 和 xrange 的组合。


它进行了 19 次迭代。


def gameADD():


    a = 1

    b = 50

    error = 0

    correct = 0

    myguess = 0

    x = 0

    for x in range(0, 10):

        print "for loop",x            

        num1 = random.randint(a, b)

        num2 = random.randint(a, b)

        result = (num1 + num2)


        print "  ",num1

        print "+ ",num2

        print "___________"

        print " "

        myguess = input('Hvad er Resultatet?:  ')


        if myguess != result:

            print

            "Det er forkert"

            print

            "KOM IGEN MESTER"

            error = error + 1

            print

            "forkert times", x


        if myguess == result:

            print

            "__"

            print

            "GODT!!! DET ER RIGTIG"

            print

            result, " er korrekt"

            print

            "Du har lavet ", error, " fejl."

            correct = correct + 1

            print

            "Du har lavet ", correct, " rigtig."

            print

            "korrekt times", x



        x = x + 1

        return error

触发函数的代码:


pick=input('Hvad vil du lave? :')




    if pick == 1:

        os.system('clear') 

        start = time.time()

        gameADD()

        end = time.time()

        calctime = end-start

        print (calctime)," sekunder"

        #insert new data after each round

        con = lite.connect('math.db')

        with con:

            cur = con.cursor()

            user = username

            ttime = calctime

            errors = gameADD()

            cur.execute("INSERT INTO stats VALUES(?, ?, ?, ?);",[user,"1",ttime,errors])            


        raw_input('Tryk ENTER for at komme til hovedmenu....')

        os.system('clear')


慕妹3146593
浏览 190回答 2
2回答

紫衣仙女

您使用了 for 循环,但随后添加了条件,就好像您正在使用 while 循环一样。for 循环处理 x = x +1 和 x=0 部分本身,因此您不需要它们。for 循环和 x=x+1 都将 x 加 1。def gameADD():    a = 1    b = 50    error = 0    correct = 0    myguess = 0    for x in range(0, 10):        print "for loop",x                    num1 = random.randint(a, b)        num2 = random.randint(a, b)        result = (num1 + num2)        print "  ",num1        print "+ ",num2        print "___________"        print " "        myguess = input('Hvad er Resultatet?:  ')        if myguess != result:            print            "Det er forkert"            print            "KOM IGEN MESTER"            error = error + 1            print            "forkert times", x        if myguess == result:            print            "__"            print            "GODT!!! DET ER RIGTIG"            print            result, " er korrekt"            print            "Du har lavet ", error, " fejl."            correct = correct + 1            print            "Du har lavet ", correct, " rigtig."            print            "korrekt times", x    return error

郎朗坤

这是正确的版本(我已经标记了我进行更改的地方):def gameADD():&nbsp; &nbsp; a = 1&nbsp; &nbsp; b = 50&nbsp; &nbsp; error = 0&nbsp; &nbsp; correct = 0&nbsp; &nbsp; myguess = 0&nbsp; &nbsp; x = 0&nbsp; # <<-- comment or remove this line&nbsp; &nbsp; for x in range(0, 10):&nbsp; &nbsp; &nbsp; &nbsp; print "for loop",x&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; num1 = random.randint(a, b)&nbsp; &nbsp; &nbsp; &nbsp; num2 = random.randint(a, b)&nbsp; &nbsp; &nbsp; &nbsp; result = (num1 + num2)&nbsp; &nbsp; &nbsp; &nbsp; print "&nbsp; ",num1&nbsp; &nbsp; &nbsp; &nbsp; print "+ ",num2&nbsp; &nbsp; &nbsp; &nbsp; print "___________"&nbsp; &nbsp; &nbsp; &nbsp; print " "&nbsp; &nbsp; &nbsp; &nbsp; myguess = input('Hvad er Resultatet?:&nbsp; ')&nbsp; &nbsp; &nbsp; &nbsp; if myguess != result:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Det er forkert"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "KOM IGEN MESTER"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; error = error + 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "forkert times", x&nbsp; &nbsp; &nbsp; &nbsp; if myguess == result:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "__"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "GODT!!! DET ER RIGTIG"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result, " er korrekt"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Du har lavet ", error, " fejl."&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; correct = correct + 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Du har lavet ", correct, " rigtig."&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "korrekt times", x&nbsp; &nbsp; &nbsp; &nbsp; #x = x + 1 # <<-- comment or remove this line&nbsp; &nbsp; return error&nbsp; &nbsp;# <<-- indented to the left这是结果(应该运行 10 次):>>> gameADD()for loop 0&nbsp; &nbsp;5+&nbsp; 28___________Hvad er Resultatet?:&nbsp; 4for loop 1&nbsp; &nbsp;12+&nbsp; 25___________Hvad er Resultatet?:&nbsp; 5for loop 2&nbsp; &nbsp;25+&nbsp; 10___________Hvad er Resultatet?:&nbsp; 6for loop 3&nbsp; &nbsp;9+&nbsp; 12___________Hvad er Resultatet?:&nbsp; 4for loop 4&nbsp; &nbsp;44+&nbsp; 32___________Hvad er Resultatet?:&nbsp; 5for loop 5&nbsp; &nbsp;31+&nbsp; 49___________Hvad er Resultatet?:&nbsp; 6for loop 6&nbsp; &nbsp;12+&nbsp; 45___________Hvad er Resultatet?:&nbsp; 4for loop 7&nbsp; &nbsp;12+&nbsp; 49___________Hvad er Resultatet?:&nbsp; 3for loop 8&nbsp; &nbsp;18+&nbsp; 22___________Hvad er Resultatet?:&nbsp; 2for loop 9&nbsp; &nbsp;13+&nbsp; 10___________Hvad er Resultatet?:&nbsp; 310>>>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python