python以10个元素换行

python以10个元素换行,python,python-2.7,line-breaks,Python,Python 2.7,Line Breaks,因此,我必须写入标准输出100个数字,但在一行中只放入10个数字,我编写的代码几乎完美,但输出如下: 23456789101 5378566145 8353464573 7596745634 4352362356 2342345346 2553463221 9873422358 8223552233 578942378 代码如下: import sys import random as r UPTO = 100 def main(): for i in xrange

因此,我必须写入标准输出100个数字,但在一行中只放入10个数字,我编写的代码几乎完美,但输出如下:

23456789101
5378566145 
8353464573 
7596745634 
4352362356 
2342345346 
2553463221 
9873422358 
8223552233 
578942378
代码如下:

import sys
import random as r

UPTO = 100

def main():
    for i in xrange(UPTO):
        if i % 10 == 0 and i != 0:
            sys.stdout.write(str(r.randint(0, 9)) + '\n')
        else:
            sys.stdout.write(str(r.randint(0, 9))) 
    print
如何才能完美地完成此操作?

在以下位置更改您的循环:

for i in xrange(1, UPTO + 1):
代码:

输出:

5324707535
0662651201
6774603548
2062356640
2371234722
0295841132
5498111577
0871557117
3062255375
2219008944

您需要从1开始,然后转到
直到+1

for i in xrange(1, UPTO + 1):
一旦更改代码的工作方式:

In [18]: main()
3989867912
0729456107
3457245171
4564003409
3400380373
1638374598
5290288898
6348789359
4628854868
4172212396
您还可以将“打印”用作从
导入的函数,以简化代码:

from __future__ import print_function

import random as r

UPTO = 100

def main():
    # use a step of 10
    for i in range(0, UPTO, 10):
        # sep="" will leave no spaces between, end="" removes newline
        print(*(r.randint(0, 9) for _ in range(10)), end="", sep="")
        print()

正如其他人所指出的,修复现有代码只是从1开始,而不是0(或者在测试剩余代码时将1添加到
i

但你根本不需要重新发明轮子。你可以用它简化很多自动包装。只需一次生成所有输出数据,例如:

digits = 100
# Make a 100 long string of digits
alltext = ''.join(str(random.randrange(10)) for _ in range(digits))

# Or to achieve the same effect more efficiently:
alltext = str(random.randrange(10**(digits-1), 10**digits))
然后使用
textwrap.wrap
和一个循环来打印它:

import textwrap

for line in textwrap.wrap(alltext, width=10):
    print line
哪一个得到(例如):


听起来像是对
itertools
grouper
配方的很好使用

import itertools

def grouper(iterable, n, fillvalue=""):
    args = [iter(iterable)] * n
    return itertools.izip_longest(*args, fillvalue=fillvalue)

UPTO = 100

digits = [str(random.randint(0, 9)) for _ in range(UPTO)]

sys.stdout.write("\n".join(map("".join, grouper(digits, 10)))

我将从python3导入
打印
,并使用它:

from __future__ import print_function
import random

UPTO = 100
for i in xrange(100):
    for j in xrange(10):
        print(random.randint(0,9), end='')
    print()
用于蟒蛇2

from random import randint
import sys
for i in range(100):
  sys.stdout.write(str(randint(0,9))+("\n" if i%10==9 else ""))
或者如果您允许使用“print”函数而不是print语句

from __future__ import print_function
from random import randint
for i in range(100):
  print(randint(0,9), end="\n" if i%10==9 else "")

你如何定义“完美”?你能给出你期望的输出吗?每一行应该是10个数字,但我的输出的第一行是11,最后一行是9。其他行是好的。那里的代码不应该运行,if语句中没有模运算符的左操作数
if%10==0
?你能修复你的粘贴吗?@KingstonJoshua:把问题中的代码正确格式化。您可以使用该链接。谢谢,此解决方案对我有效:对于范围(1,最多+1)内的i:!或者像我们其他人一样停止使用python2!:)在最实用的答案上做得很好(包括我的!)
from random import randint
import sys
for i in range(100):
  sys.stdout.write(str(randint(0,9))+("\n" if i%10==9 else ""))
from __future__ import print_function
from random import randint
for i in range(100):
  print(randint(0,9), end="\n" if i%10==9 else "")