Python,嵌套循环打印在一行,多个副本

时间:2015-04-19 06:19:38

标签: python python-3.x

非常新的python请原谅!

问题是......使输出看起来像

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

我使用用户输入作为限制和副本数量(在本例中为5和3),所以我已经这样做了;

limit = int(input("Select upper limit"))
copies = int(input("Select number of copies"))


def output(limit):
    for i in range(copies):
        for x in range(limit):
            print (x + 1, end=" ")


output(limit)

然而,答案显示为1 2 3 4 5 1 2 3 4 5 1 2 3 4 5。我知道这是因为end=" "但不确定如何绕过它!任何帮助表示赞赏

4 个答案:

答案 0 :(得分:3)

为每个循环显式打印新行:

def output(copies, limit):
    for i in range(copies):
        for x in range(limit):
            print (x + 1, end=" ")
        print()  # <----
        # print()  # Add this if you want an empty line

output(copies, limit)

答案 1 :(得分:3)

你得到了正确范围的部分,但是你错过了一件事,你可以指定一个起始编号:

v0 = range(1, limit + 1)

要将数字转换为字符串,请使用str()函数:

v1 = (str(x) for x in v0)

为了在相邻数字之间加一个空格,请使用字符串的join()成员函数:

v2 = ' '.join(v1)

然后,您可以自己添加换行符:

v3 = (v2 + '\n') * copies
print(v3, end='')

或者以这种形式:

v3 = '\n'.join(v2 for i in range(copies))
print(v3)

或者你只是在一个普通循环中多次打印同一行:

for i in range(copies):
    print(v2)

BTW:请注意v0v1是生成器,因此将它们连接到字符串v2将改变其内部状态,因此您不能简单地重复它并获得相同的内容结果

答案 2 :(得分:0)

limit = int(input("Select upper limit"))
copies = int(input("Select number of copies"))

def output(limit):
    for i in range(copies):
        if (i!=0):
            print()
            print()
        for x in range(limit):
            print (x + 1, end="")

output(limit)

答案 3 :(得分:0)

对您的代码稍作修改:

def output(limit):
    for i in range(copies):
        for x in range(limit):
            print(x + 1, end=' ')
        print()