对齐整数(基本python)

时间:2013-04-19 01:10:26

标签: python

嘿伙计们,我需要帮助调整整数。我将向您展示我的代码是什么,我的输出是什么,以及我想要的输出是什么。谢谢!

代码:

test_sign='#'
test_numbers=[100000,5000000,7000000]
test_calc_list=[]
test_sum=sum(test_numbers)
test_list=['Testcase1','Testcase2','Testcase3']
test_sign_list=[]

for x in test_numbers:
    test_calc=round((x/float(test_sum)*10))
    test_calc_list.append(test_calc)

for y in test_calc_list:
    y=int(y)
    signs=y*test_sign
    test_sign_list.append(signs)

for z in range(len(test_list)):
    print "%8s"%test_list[z]+":",test_sign_list[z],test_numbers[z]

输出:

Testcase1:  100000
Testcase2: #### 5000000
Testcase3: ###### 7000000

期望的输出:

Testcase1:         100000
Testcase2: ####   5000000
Testcase3: ###### 7000000

4 个答案:

答案 0 :(得分:4)

选项一,指定格式的长度:

http://docs.python.org/2/library/string.html#format-specification-mini-language

“width是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容确定。”

选项二,使用ljust,rjust和center预填充字符串:

http://docs.python.org/2/library/string.html#string.ljust

答案 1 :(得分:4)

这可能是学习{} - 格式化的好时机,而不是更深入地了解(未完全弃用,但不鼓励)% - 格式化。

特别是因为您使用的唯一% - 格式似乎不正确。 (没有充分的理由将%8s用于你知道长度为9个字符的字符串......)

所以:

print '{}: {:<6} {:>7}'.format(test_list[z], test_sign_list[z], test_numbers[z])

有关所有选项的详细信息,请参阅String Formatting


作为旁注,我认为你的循环会更加可读:

for test, sign, number in zip(test_list, test_sign_list, test_numbers):
    print '{}: {:<6} {:>7}'.format(test, sign, number)

答案 2 :(得分:1)

更改

print "%8s"%test_list[z]+":",test_sign_list[z],test_numbers[z]

print "%8s: %-6s %7i" % (test_list[z], test_sign_list[z], test_numbers[z])

答案 3 :(得分:0)

strings = ["abc", "sakjfslkdfnds", "7"]
maxlength = max(map(len, strings))
for index, string in enumerate(strings):
  print("Testcase%d: %s" % (index, string.rjust(maxlength, ".")))

省略“。”如果你只想要空格,那就是参数。