嘿伙计们,我需要帮助调整整数。我将向您展示我的代码是什么,我的输出是什么,以及我想要的输出是什么。谢谢!
代码:
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
答案 0 :(得分:4)
选项一,指定格式的长度:
http://docs.python.org/2/library/string.html#format-specification-mini-language
“width是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容确定。”
选项二,使用ljust,rjust和center预填充字符串:
答案 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, ".")))
省略“。”如果你只想要空格,那就是参数。