Цикл for всегда запускается 2 раза до остановки - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь составить основную математическую программу. Приведенная ниже функция работала ранее, но сейчас цикл for всегда выполняет 2 полных итерации до остановки функции.

Она должна выполняться только 10 раз.

Я пробовал несколько комбинаций отступа и дляЦиклы / 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')

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Вы использовали цикл for, но затем добавили условия, как если бы вы использовали цикл while. Цикл for обрабатывает части x = x +1 и x = 0, так что они вам не нужны.

Цикл for и x = x + 1 добавляют 1 к x.

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
0 голосов
/ 05 октября 2019

Вот правильная версия (я пометил места, где я внес изменения):

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