我正在尝试运行一个for循环,该循环在每次迭代时都会添加一个空格,以使文本形成对角线,但是我找不到迭代器的整数值
我尝试了以下操作:
for x in string:
print(" "*x+x)
但这会引发错误,因为x是一个字符串,而不是数字。我也尝试过:
for x in string:
print(" "*string.find(x)+x)
但是当字符串中重复字符时,您当然会获得该字符的第一个实例的空格数。
是否可以访问迭代器的实际整数值,以便我可以将其乘以空格?
我尝试过的代码解决方案
for x in string:
print(" "*x+x)
和
for x in string:
print(" "*string.find(x)+x)
第一个代码产生TypeError:不能将序列乘以'str'类型的非整数
第二个代码产生
o
l
d
m
a
c
d
o
n
a
l
d
h
a
d
a
f
a
r
m
答案 0 :(得分:1)
您需要Python迭代器同时返回序列的索引和内容:enumerate
:
text = "Old MacDonald had a farm"
for pad, char in enumerate(text):
print(' '*pad + char)
pad
的取值范围为0到len(text)-1。
输出:
O
l
d
M
a
c
D
o
n
a
l
d
h
a
d
a
f
a
r
m
如果您希望更接近于已学知识的解决方案,只需遍历字符串的长度,然后为输出索引该字符即可。
text = "Old MacDonald had a farm"
for pad in range(len(text)):
print(' '*pad + text[pad] )
答案 1 :(得分:0)
您可以使用enumerate
与x
一起获取循环索引:
for i, x in enumerate(string):
print(" "*i+x)
如您所述,第二个方法失败,因为find
返回第一个出现的方法。您可以通过使用start
和end
参数来解决这个问题,但是弄清楚该用什么对他们来说可能比它的价值更麻烦。
答案 2 :(得分:0)
以下是与空间相乘的简单说明:
`x = '*'
for u in range(0,2000):
for k in range(0,11):
for i in range(0,6):
print(i*x,' '*k,i*x)
for j in range(6,0,-1):
print(j*x,' '*k,j*x)
for k in range(10,0,-1):
for i in range(0,6):
print(i*x,' '*k,i*x)
for j in range(6,0,-1):
print(j*x,' '*k,j*x)`
出于娱乐目的,在V.S CODE中运行此代码并享受动画..... HeHeHeHeHeHeHeHeHeHeHeHe ........