我在线执行不同的任务。目标是在不依赖外部库的情况下完成很多工作。
今天我不能做的一项任务就是这一项:
给定街道名称和用户提供的编号,创建user_provided_number列表并输出街道名称。然后,在同一个表中创建相同的输出但反转街道地址。街道地址之间的空格应替换为“|”。如果街道名称太短而无法完成行,则渲染“?” 每个剩余的空间。
场景示例:
街道地址:Mystreet路,用户提供的号码: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 ? ? ?
到目前为止,我设法做了以下事情:
strAddress = input("What's your street address?")
givenNumber = input("What's your favourite number from 1 to 10?")
reverseAddress = strAddress[::-1]
splitAddress = list(strAddress)
for row in range(0,int(len(strAddress)/givenNumber)):
for element in range(0,givenNumber):
print (splitAddress[element], end=' ')
print()
为什么这个“数组”(?)在每一行上打印相同的元素?假设用户提供了“4”作为他们的号码,从我写的代码中我预期输出如下:
M y s t
r e e t
r o a
d
但输出是:
M y s t
M y s t
M y s t
首先,你应该转换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 ? ? ?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。