1

私は、周波数分析の手助けをするために各文字が何回入力されたかを数えるプログラムを書いています。私のプログラムはうまくいきますが、いつも私の答えの一部が曲がりくねった線に沿って出力されます。出力例:私は次のコードを使用してい私のデータをpython 3の行に沿って表示するにはどうしたらいいですか?

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% 

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% 

は、事前にありがとう:

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) 

は、私はそれがこのような何かを表示取得しようとしています!

答えて

0

どのように表示するかによって異なります。 1つの方法は、printステートメントにタブを追加することです。例えば

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

パッドにスペースの数を持つ:

print(('{:<2}{:<3}{:<3}').format(letter, times, percent)) 
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文字列に適切な書式を使用してください。

{percent:5.1%}は、ここでは、幅5のフィールドに「パーセント」変数を挿入し、小数点以下1桁を挿入することを意味します。 %は、数値に100を乗算してパーセント記号を追加する書式指定子です。 {letter}は特別な書式設定なしで挿入され、{times:2}はデフォルトで2桁のフィールドを作成し、数字の右寄せにします。入力の

出力 "abbbbbbbbbbccc":

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

も参照してください:

関連する問題