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

2024-10-05 14:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力把一个非常基本的数学程序放在一起。 下面的函数以前已经工作过,但是现在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')

Tags: forinputiftimeerrorresultconprint
2条回答

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

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

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

相关问题 更多 >