我正在编写一个程序,计算每个字母输入的次数,以帮助我进行频率分析。我的程序有效,但它总是沿着曲线输出我的部分答案。示例输出:
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%
提前谢谢!
答案 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%
另见: