如何让我的数据沿着python 3的一行显示?

时间:2017-02-20 18:53:11

标签: python python-3.x data-visualization frequency-analysis python-3.6

我正在编写一个程序,计算每个字母输入的次数,以帮助我进行频率分析。我的程序有效,但它总是沿着曲线输出我的部分答案。示例输出:

Length of message: 591 characters
A  11 1%
B  27 4%
C  37 6%
D  2 0%
E  2 0%
F  5 0%
G  17 2%
H  8 1%
I  9 1%
J  49 8%
L  7 1%
M  44 7%
N  20 3%
P  42 7%
Q  6 1%
R  36 6%
S  1 0%
U  6 1%
V  22 3%
W  13 2%
X  56 9%
Y  11 1%

我使用以下代码:

text = input()
symbols = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
letters = collections.Counter(text.upper())
length = len(text)
print('Length of message: {} characters'.format(length))
for letter, times in sorted(letters.items()):
    if letter not in symbols:
        continue
    percent = str(int((times / length) * 100)) + '%'
    print(letter, times, percent)

我试图让它显示如下:

A 11 1%
B 27 3%
C 37 6%
D 2  0%
E 2  0%
F 5  0%
G 17 2%
H 8  1%
I 9  1%
J 49 8%
L 7  1%
M 44 7%
N 20 3%
P 42 7%
Q 6  1%
R 36 6%
S 1  0%
U 6  1%
V 22 3%
W 13 2%
X 56 9%
Y 11 1%

提前谢谢!

3 个答案:

答案 0 :(得分:1)

要填充多个空格:

print(('{:<2}{:<3}{:<3}').format(letter, times, percent))

答案 1 :(得分:0)

取决于您希望如何显示它。其中一种方法是在print语句中添加制表符。

例如:

print(letter,"\t", times,"\t", percent)

答案 2 :(得分:0)

由于您标记了Python 3.6,请使用新的f-strings

import collections

text = input()
symbols = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
letters = collections.Counter(text.upper())
length = len(text)
print(f'Length of message: {length} characters')
for letter, times in sorted(letters.items()):
    if letter not in symbols:
        continue
    percent = times / length
    print(f'{letter} {times:2} {percent:5.1%}')

无需手动计算百分比字符串。只需计算浮点值percent = times / length并在f-string中使用正确的格式。

{percent:5.1%}表示:插入&#34;%&#34;这里的变量在宽度为5的字段中,小数点后有一个位置。 %是一个格式说明符,它将数字乘以100并添加百分号。插入的{letter}没有特殊的格式,{times:2}默认为数字右对齐的2宽字段。

输入输出&#34; abbbbbbbbbbccc&#34;:

Length of message: 14 characters
A  1  7.1%
B 10 71.4%
C  3 21.4%

另见: