我想打印
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
,但我的输出仍然是错误的。
答案 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.join
和generator 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