как вставить "|"в "-" каждые 5, как это? - PullRequest
2 голосов
/ 28 октября 2019

Я хочу сделать эту картинку, но понятия не имею, вставить "|"enter image description here

и это мой код.

"""test"""
def counts():
    """process"""
    text = input()
    text_abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    for i in text_abc:
        count_text = text.count(i)
        if count_text > 0:
            ans = "-"* count_text
            print("%s : %s"%(i, ans))
counts()

он выводит вот так

my input:"aaaaaaaabbbbbcccdd"
my output:
a : --------
b : -----
c : ---
d : --

как я могу это сделать? Заранее благодарим за любую помощь, которую вы можете оказать. пс. извините за мой английский, я плохо знаю английский

Ответы [ 3 ]

3 голосов
/ 28 октября 2019

Простейшим способом было бы просто поместить его в ans через str.replace(), что по умолчанию заменит произвольное количество вхождений, начинающихся с фронта:

ans = ("-" * count_text).replace('-----', '-----|')
>>> counts()
aaaaaaaabbbbbcccdd
a : -----|---
b : -----|
c : ---
d : --
1 голос
/ 28 октября 2019

Вы также можете сделать это следующим образом:

ans = "-" * count_text
ans = '|'.join(ans[i:i+5] for i in range(0, len(ans), 5))

полный код:

def counts():
    """process"""
    text = input()
    text_abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    for i in text_abc:
        count_text = text.count(i)
        if count_text > 0:
            ans = "-" * count_text
            ans = '|'.join(ans[i:i+5] for i in range(0, len(ans), 5))
            print("%s : %s"%(i, ans))

counts()

вывод:

ex.1

"aaaaaaaabbbbbcccdd"
a : -----|---
b : -----
c : ---
d : --

пример 2

"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbcccccccccccccccccccccddyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
a : -----|-----|-----|-----|-----|-----|-----|-
b : ----
c : -----|-----|-----|-----|-
d : --
y : -----|-----|-----|-----|-----|-----|----
0 голосов
/ 28 октября 2019

Я использовал модуль Счетчик из пакета коллекций, также форматирование в 3.6, я не уверен, что коллекции работают хорошо для версий ниже 3.6, пожалуйста, перепроверьте.

from collections import Counter

"""test"""
def counts():
    """process"""
    text = Counter(input()) # counter returns a list with key as the element and value as it's frequency

    for i in text.keys(): # iterating in keys
        count_text = text[i]  # getting the frequency of that alphabet
        pattern = ['|-' if (_ % 5 == 0 and _ != 0) else '-' for _ in range(count_text)] # creating a list in which we put '|-' if the position if mod of 5 else we just put '-'.
        patternString = ''.join(pattern) # then we convert it to string
        print(f'{i}: {patternString} ')

counts()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...