在python中,输出没有得到预期的效果

2024-09-27 21:29:55 发布

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

与实际输出相比没有得到预期的输出。 尽管这里的柜台已经放在了环路外。 这里的标记每写错一次就印一次。 我希望它只能在最后打印一次。我已经在if循环外编写了它

resp = {}
ansdb = {}
counter = 0

for i in range(1, 10):
    resp_i = form.getvalue('opt_%d' %i, '0')
    resp[i] = int(resp_i)

print "<br>"


for row in prsnobj.result:
    ansdb[int(row[0])] = int(row[1])

print "<br>"

for i in range(1, len(resp)+1):

    if resp[i] == ansdb[i]:
        print "<br>Right"
        counter += 1

   else:
       print "<br>Wrong"

   print "Marks:", counter

实际输出:

Right Marks: 1
Right Marks: 2
Wrong Marks: 2
Right Marks: 3
Right Marks: 4 

期望值:

Right 
Right 
Wrong 
Right
Right 
Marks: 4

Tags: inbrrightforifcounterrangeresp
3条回答

将此行移出循环范围。你知道吗

print "Marks:", counter

在for循环外编写最后一条print语句。像这样:

resp = {}
ansdb = {}
counter = 0

for i in range(1, 10):
    resp_i = form.getvalue('opt_%d' %i, '0')
    resp[i] = int(resp_i)

print "<br>"


for row in prsnobj.result:
    ansdb[int(row[0])] = int(row[1])

print "<br>"

for i in range(1, len(resp)+1):

    if resp[i] == ansdb[i]:
        print "<br>Right"
        counter += 1

  else:
       print "<br>Wrong"

print "Marks:", counter

最后一行:

print "Marks:", counter

在for循环中,所以只要更正它,它就会工作:

resp = {}
ansdb = {}
counter = 0

for i in range(1, 10):
    resp_i = form.getvalue('opt_%d' %i, '0')
    resp[i] = int(resp_i)

print "<br>"

for row in prsnobj.result:
    ansdb[int(row[0])] = int(row[1])

print "<br>"

for i in range(1, len(resp)+1):

    if resp[i] == ansdb[i]:
        print "<br>Right"
        counter += 1
    else:
        print "<br>Wrong"

print "Marks:", counter

相关问题 更多 >

    热门问题