For循环在停止之前始终运行2次

时间:2019-10-05 08:48:02

标签: python for-loop

我正在尝试将一个非常基本的数学程序组合在一起。 下面的函数以前已经起作用,但是现在for循环始终在函数停止之前运行2个完整的迭代。

它只能运行10次。

我尝试了缩进和for / while循环以及范围和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')

2 个答案:

答案 0 :(得分:-1)

这是正确的版本(我已经标记了进行更改的地方):

def gameADD():
    a = 1
    b = 50
    error = 0
    correct = 0
    myguess = 0
    x = 0  # <<-- comment or remove this line
    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 # <<-- comment or remove this line
    return error   # <<-- indented to the left

这是结果(应运行10次):

>>> gameADD()
for loop 0
   5
+  28
___________

Hvad er Resultatet?:  4



for loop 1
   12
+  25
___________

Hvad er Resultatet?:  5



for loop 2
   25
+  10
___________

Hvad er Resultatet?:  6



for loop 3
   9
+  12
___________

Hvad er Resultatet?:  4



for loop 4
   44
+  32
___________

Hvad er Resultatet?:  5



for loop 5
   31
+  49
___________

Hvad er Resultatet?:  6



for loop 6
   12
+  45
___________

Hvad er Resultatet?:  4



for loop 7
   12
+  49
___________

Hvad er Resultatet?:  3



for loop 8
   18
+  22
___________

Hvad er Resultatet?:  2



for loop 9
   13
+  10
___________

Hvad er Resultatet?:  3



10
>>>

答案 1 :(得分:-1)

您使用了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