按顺序打印清单

时间:2015-05-10 21:57:11

标签: python python-2.7

我想打印

1
22
333
4444
...  & so on until 10

我的代码:

for i in range(1,11): 
    print 'i'*i 

我得到了输出:

i
ii
iii
iiii
...

我哪里错了?我需要i值,我尝试了'%d'*i %i,但我的输出仍然是错误的。

7 个答案:

答案 0 :(得分:4)

您正在复制(使用重载的*运算符)字符串'i' i次 - 相反,您应该复制i变量的字符串表示形式

for i in range(1,11): 
    print str(i)*i

答案 1 :(得分:1)

你只是略微错误的符号,单引号而不是反引号。后者工作正常:

>>> for i in range(1,11):
        print `i`*i

1
22
333
4444
55555
666666
7777777
88888888
999999999
10101010101010101010

我认为你看到别人使用它们并没有注意到它们的区别?我不确定他们是否感到不满,我只知道Python 3删除了它们。

答案 2 :(得分:0)

您需要致电str(i)

for i in range(1,11):
    print str(i) * i 

您实际上是在创建字符串"i",而不是使用变量i的str表示。

输出:

1
22
333
4444
55555
666666
7777777
88888888
999999999
10101010101010101010

答案 3 :(得分:0)

In [21]: for i in range(1,11):
   ....:     print str(i)*i

答案 4 :(得分:0)

您正在'i'次打印字符i而不是str(i) i次。{/ p>

答案 5 :(得分:0)

>>> print '\n'.join(str(i)*i for i in xrange(1, 11))
1
22
333
4444
55555
666666
7777777
88888888
999999999
10101010101010101010

这是使用str.joingenerator expression的替代方法,以便将整个输出首先构造为一个大字符串,然后只打印该字符串。

我们的目标是首先构造字符串,这样我们就可以通过迭代xrange(1, 11)并对字符串版本i进行序列乘法来获得所需的字符串。在Python中,当您将序列乘以整数n时,您将获得一个由重复n次的原始序列组成的新序列。字符串是Python中的序列,因此这是一种重复字符串n次的简单方法。

接下来,我们将所有字符串片段与换行符连接在一起。当我们有大字符串时,我们只需在一个语句中打印出来。

答案 6 :(得分:0)

我了解其他答案代码不那么详细,但是,如果您' 想要将 int类型转换为str ,您可以使用以下代码生成相同的输出

row = 1
base_length = int(input("Base Length: "))

while row <= base_length:
    iteration = row
    while iteration:
        print(row,"  ", end= '')
        iteration -= 1

    print("\n")
    row += 1