将空格放在同一行中以进行循环

时间:2013-10-11 22:33:39

标签: python loops for-loop

我有编程任务,我遇到了麻烦。我完成了99%,但这是让我失望的小事。这是我的代码:

a = 0
b = 0
c = 0

for h in first:
    a = LetterMap[h]

    print(a,end="")         

for h in middle:
    b = LetterMap[h]
    print(b,end="")

for c in last:
    c = letterMap[c]
    print(c,end="")

此块之前的输出和此块是:

first middle last

xxxxxxxxxxxxxxx

我希望如此:

first middle last

xxxxx xxxxxx xxxx

2 个答案:

答案 0 :(得分:1)

试试这个:

for h in first:
    a = LetterMap[h]
    print(a,end="")

print(" ",end="")

for h in middle:
    b = LetterMap[h]
    print(b,end="")

print(" ",end="")

for c in last:
    c = letterMap[c]
    print(c,end="")

答案 1 :(得分:0)

我建议使用str.join和生成器表达式将翻译后的序列组合成字符串,而不是逐个打印出你的字符:

first_str = "".join(LetterMap[c] for c in first)
middle_str = "".join(LetterMap[c] for c in middle)
last_str = "".join(LetterMap[c] for c in last)

然后,您只需拨打一次print电话即可打印出来:

print(first_str, middle_str, last_str) # default separator is a space!

如果你想要一些更复杂的输出格式(而不仅仅是分隔值的空格),你可以使用str.format方法做任何你想要的格式化:

print('{2:<20}{1:_^20}{0!r:*>20}'.format(first_str, middle_str, last_str)

那将以“反向”顺序打印字符串,其中“last”在宽度为20的列中左对齐,中间值以宽度为20的列为中心,下划线在每一侧填充,并且在用星号填充的最后20个宽的列的右侧表示“第一个”值(带引号和反斜杠转义,根据需要)。

例如,如果你有三个字符串'foo''bar''baz',那么你会得到:

baz                 ________bar_________***************'foo'

您可以阅读字符串格式迷你语言in the documentation