मैं एक प्रोग्राम लिख रहा हूं जो यह गिनता है कि फ़्रीक्वेंसी एनालिसिस में मेरी मदद करने के लिए प्रत्येक अक्षर कितनी बार टाइप किया गया है। मेरा कार्यक्रम काम करता है, लेकिन यह हमेशा एक सुडौल रेखा के साथ मेरे उत्तरों का हिस्सा आउटपुट करता है। उदाहरण आउटपुट:

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%

आपका अग्रिम में ही बहुत धन्यवाद!

1
Not You 20 फरवरी 2017, 21:53

3 जवाब

कई रिक्त स्थान के साथ पैड करने के लिए:

print(('{:<2}{:<3}{:<3}').format(letter, times, percent))
1
BallpointBen 20 फरवरी 2017, 22:15

इस पर निर्भर करता है कि आप इसे कैसे प्रदर्शित करना चाहते हैं। अपने प्रिंट स्टेटमेंट में टैब जोड़ने का एक तरीका यह होगा।

उदाहरण के लिए:

print(letter,"\t", times,"\t", percent)
0
Lukasz 20 फरवरी 2017, 22:01

चूंकि आपने 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 के क्षेत्र में डालें, जिसमें दशमलव के बाद एक स्थान हो। % एक प्रारूप विनिर्देशक है जो संख्या को 100 से गुणा करता है और एक प्रतिशत चिह्न जोड़ता है। {letter} बिना किसी विशेष स्वरूपण के डाला गया है, और {times:2} एक 2-चौड़ा फ़ील्ड बनाता है जो डिफ़ॉल्ट रूप से संख्याओं के लिए सही-औचित्य है।

इनपुट का आउटपुट "abbbbbbbbbbbcccc":

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

यह सभी देखें:

0
Mark Tolonen 21 फरवरी 2017, 06:10