首先,你应该转换givenNumber成int()因为input()总是返回字符串。此外,您可以将整体strAddress转换为自身并反转自身版本,以便更轻松地访问它。splitAddress这里不需要,因为您可以像本例中的列表一样访问字符串长度和元素。在你的第一个循环中,你正在迭代len(strAddress)/givenNumber这是不够的,因为我们需要打印我们的地址两次(使用反向版本),我们需要填充扩展字符,?所以我们需要将它四舍五入,而不使用math我们可以做的库这就像我所展示的那样。最后,splitAddress[element]在这里,您访问地址的元素索引,这将是0 - 6每次迭代的数字,因此我们需要考虑row打印更多元素。
strAddress = input("What's your street address?")
givenNumber = int(input("What's your favourite number from 1 to 10?"))
strAddress += '|' + strAddress[::-1]
strAddress = strAddress.replace(' ', '|')
lines_to_print = len(strAddress)//givenNumber + (len(strAddress)%givenNumber>0)
for row in range(lines_to_print):
for element in range(givenNumber):
if row*givenNumber + element < len(strAddress):
print(strAddress[row*givenNumber + element], end=' ')
else:
print('? ', end='')
print()
输出Mystreet road和6
M y s t r e
e t | r o a
d | d a o r
| t e e r t
s y M ? ? ?