250 255 260 265 270 275 280 285 290 295 300 305 310 315 320
325 330 335 340 345 350 355 360 365 370 375 380 385 390 395
400 405 410 415 420 425 430 435 440 445 450 455 460 465 470
475 480 485 490 495 500 505 510 515 520 525 530 535 540 545
550 555 560 565 570 575 580 585 590 595 600 605 610 615 620
625 630 635 640 645 650 655 660 665 670 675 680 685 690 695
700 705 710 715 720 725 730 735 740 745 750
我正在尝试创建一个程序,您在其中输入下限(在本例中为250
),上限(750
在这种情况下为跳过数字5
在这种情况下)并告诉Python我想在每行(我在这种情况下为15
)之前需要多少个数字,然后才能以某种方式帮助我进行格式化?我有Python 3.1.7。谢谢!< / p>
基本上我怎么告诉python在破解之前每行创建15
个数字,谢谢。
答案 0 :(得分:1)
使用范围创建250到750的数字列表,步长为5.使用枚举值循环显示该值,该值包含值和计数器。检查计数器的模数15以确定是否需要在打印中包含换行符。计数器从零开始,所以寻找cnt%15 == 14。
import sys
for cnt,v in enumerate(range(250,755,5)):
if cnt%15==14:
sys.stdout.write("%d\n" % v)
else:
sys.stdout.write("%d " % v)
答案 1 :(得分:1)
@ ljk07
如何更紧凑,更现代
for cnt,v in enumerate(range(250,755,5),1):
print '{}{}'.format(v,' ' if cnt % 15 else '\n'),
编辑: 错过了python 3部分 - 打印甚至更好
for cnt,v in enumerate(range(250,755,5),1):
print( '{:3}'.format(v),end=' ' if cnt % 15 else '\n')
答案 2 :(得分:1)
混合使用的另一个选择是使用itertools.grouper
食谱:
def grouper(n, iterable, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
from itertools import izip_longest
# grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
然后循环变为:
for line in grouper(15, range(250, 755, 5), ''):
print(' '.join(map(str, line)))
答案 3 :(得分:0)
如果您需要打印新行,您应该保留一个计数器并检查计数器的模数。
看起来像这样:
if counter % 15 == 0:
sys.stdout.write(str("\n"))