0

我有一个编程任务,我遇到了麻烦。我已经完成了 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
4

2 回答 2

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="")
于 2013-10-11T22:40:05.103 回答
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)

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

例如,如果你的三个字符串是'foo','bar''baz',你会得到:

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

您可以在文档中阅读有关字符串格式化迷你语言的信息

于 2013-10-12T00:52:32.897 回答