我正在尝试编写一个函数,它将以相反的顺序(从零开始)打印给定总数的请求记录数。如果传入0作为请求记录的数量,则使用总数。
示例:
total=3
numRequested=3
rec00000002
rec00000001
rec00000000
total=2
numRequested=1
rec00000001
虽然它适用于某些情况,但当numRequested
小于total
且接近0时,我遇到了问题。而不是上述结果,我得到以下结果:
total=2
numRequested=1
rec00000000
这是我的尝试:
def printExpBuf(total, numRequested):
# check if we want all entries
if numRequested == 0:
numRequested = total
# skip over entries we don't need
while (total > numRequested):
total-=1
# print results
while (total > 0):
print "rec%08d" % (total - 1)
total-=1
我发现问题存在于我将total
递减1,但我对如何解决它感到茫然。有人能指出我正确的方向吗?
答案 0 :(得分:1)
根据评论 -
我总是希望从最高纪录开始。
这不是你的代码正在做的事情,你首先减少总数,直到它等于所请求记录的数量。然后打印出记录。
您实际想要做的是循环和打印记录,直到请求的记录数变为0,然后从函数返回。
示例 -
def printExpBuf(total, numRequested):
# check if we want all entries
if numRequested == 0:
numRequested = total
# print results
while (numRequested > 0 and total > 0):
print "rec%08d" % (total - 1)
numRequested -= 1
total -= 1
答案 1 :(得分:0)
你非常接近,这很有效。
def print_exp_buf(total, num_requested):
# check if we want all entries
if num_requested == 0:
num_requested = total
# skip over entries we don't need
while (total > num_requested):
total -= 1
# print results
while (total >= 0):
print "rec%08d" % (total)
total -= 1
你遇到的问题是:
total - 1
,以便永远不会打印第一条记录。答案 2 :(得分:0)
看起来你正在尝试做的只是打印所请求记录号的反向顺序列表。与减少变量的所有这些东西相比,这是一个更简单的任务;对于这种情况,python有一个超简单的循环语法:
def printExpBuf(total, numRequested):
if (numRequested == 0) or (numRequested > total):
numRequested = total
for count in range(numRequested, 0, -1):
print "rec%08d" % (count)
然后:
printExpBuf(3, 3)
printExpBuf(2, 1)
rec00000003
rec00000002
rec00000001
rec00000001