开发者社区> 问答> 正文

Python创建一个街道地址表

python小能手 2019-01-23 16:31:03 398

我在线执行不同的任务。目标是在不依赖外部库的情况下完成很多工作。

今天我不能做的一项任务就是这一项:

给定街道名称和用户提供的编号,创建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

分享到
取消 提交回答
全部回答(1)
  • python小能手
    2019-07-17 23:26:43

    首先,你应该转换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 ? ? ?

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题