为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3146593 2022-06-14 15:36:49
我正在尝试将一个非常基本的数学程序放在一起。下面的函数以前工作过,但现在 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')
查看完整描述

2 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

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


查看完整回答
反对 回复 2022-06-14
?
郎朗坤

TA贡献1921条经验 获得超9个赞

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


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

>>>



查看完整回答
反对 回复 2022-06-14
  • 2 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号