Python 迭代双值以生成页码
我有35个项目在3页中分开。第1页和第2页有15项,第3页有5项。现在我已经创建了一个循环来告诉脚本去哪里。这是剧本Python 迭代双值以生成页码,python,python-2.7,if-statement,for-loop,Python,Python 2.7,If Statement,For Loop,我有35个项目在3页中分开。第1页和第2页有15项,第3页有5项。现在我已经创建了一个循环来告诉脚本去哪里。这是剧本 for i in range(1,36): if i <= 15: page = 1 item = i if i > 15 <= 30: page = 2 item = i - 15 if i > 30 <= 35: page = 3
for i in range(1,36):
if i <= 15:
page = 1
item = i
if i > 15 <= 30:
page = 2
item = i - 15
if i > 30 <= 35:
page = 3
item = i - 30
print 'GOTO page %s take item %s' % (page, item)
你可以用数学:
def page_number(item, items_per_page):
# 1-based numbering assumed; first item is 1, first page is 1
return (item - 1) // items_per_page + 1
对于每页15项,这正确地表明第3页上有第31项:
>>> page_number(30, 15)
2
>>> page_number(31, 15)
3
并将每页25个项目扩展到第1000页:
>>> page_number(25005, 25)
1001
只需在循环中使用它:
for i in range(1, max_items + 1):
page = page_number(i, items_per_page)
item = i - (page - 1) * items_per_page
print 'GOTO page %s take item %s' % (page, item)
如果需要语句,则无
一般来说,如果if
语句的数量取决于循环的项数,那么您的做法是错误的。您可以使用数学:
def page_number(item, items_per_page):
# 1-based numbering assumed; first item is 1, first page is 1
return (item - 1) // items_per_page + 1
page = ( (i-1) // items_per_page ) + 1
item = ( (i-1) % items_per_page ) + 1
对于每页15项,这正确地表明第3页上有第31项:
>>> page_number(30, 15)
2
>>> page_number(31, 15)
3
并将每页25个项目扩展到第1000页:
>>> page_number(25005, 25)
1001
只需在循环中使用它:
for i in range(1, max_items + 1):
page = page_number(i, items_per_page)
item = i - (page - 1) * items_per_page
print 'GOTO page %s take item %s' % (page, item)
如果需要语句,则无
一般来说,如果if
语句的数量取决于循环的项数,那么您的做法是错误的。注意:您的条件是奇数。您可以使用elif
s并避免重复相同的比较:如果我注意到:您的条件很奇怪。您可以使用elif
s并避免重复相同的比较:如果我对python3使用/
,否则您将得到float对象。您可以使用divmod()
函数来计算余数和商。这个问题确实有一个python2.7标记,但感谢您提供的提示。。我不知道python有divmodYup,但是/
在Python2中也可以使用,并且您仍然可以使用从uuuu future\uuuuu导入真除法
在2中获得相同的除法行为。对Python3使用/
,否则您将得到浮点对象。您可以使用divmod()
函数来计算余数和商。这个问题确实有一个python2.7标记,但感谢您提供的提示。。我不知道python有divmodYup,但是/
在Python2中也可以使用,而且你仍然可以使用from\uuuuuuu future\uuuuuuu import true\u division
在2中获得相同的除法行为。你是国王!非常感谢你!你是国王!非常感谢你!
page = ( (i-1) // items_per_page ) + 1
item = ( (i-1) % items_per_page ) + 1