Перейти к содержимому

Как посчитать количество символов в строке python

  • автор:

Посчитать сколько символов в строке и вывести это число столько раз то бы равнялось длине заданной строки

Помогите пожалуйста написать программу в которой задается строка с клавиатуры, подсчитывается количество символов в этой строке и выводится число несколько раз так чтобы новая строка была равна по длине старой
1) Входные данные: привет
Выходные данные: 666666
2) Входные данные: аббревиатура
Выходные данные: 121212121212

1 2 3
a = input() b = len(a) print(str(b)*len(a))

У меня работает только со словом «привет»
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Вывести большую по длине строку столько раз, на сколько символов отличаются строки
Даны две строки. Вывести большую по длине строку столько раз, на сколько символов отличаются.

Вывести большую по длине строку столько раз, на сколько символов отличаются строки
Даны две строки. Вывести большую по длине строку столько раз, на сколько символов отличаются строки.

Даны две строки. Вывести большую по длине строку столько раз, на сколько символов отличаются строки/
Даны две строки. Вывести большую по длине строку столько раз, на сколько символов отличаются.

Вывести надпись в строке столько раз, сколько выведено строк
Мне нужно сделать что то на подобии прогрессии. Объясняю: Ставится цикл на for(int i=1; i.

Вывести на экран строку столько раз, сколько точек содержится в строке
Ввести строку. Вывести на экран эту же строку столько раз, сколько точек содержится в строке.

Как правильно посчитать количество символов в каждом слове в dataframe?

Как мне правильно это сделать?
Я пытался перебрать все зачения через for i, но так либо только строки могу получить, либо символы, не могу подать отдельно все слова из строки по очереди, как это сделать?

  • Вопрос задан более трёх лет назад
  • 5326 просмотров

3 комментария

Простой 3 комментария

не могу подать отдельно все слова из строки по очереди

Покажите код, который не работает. А то не совсем понятно, что не работает

>>> l = ['postgres', 'почему', 'pg_dumpall', 'быстрый', 'pg_dump'] >>> for s in l: . print(s) . postgres почему pg_dumpall быстрый pg_dump

Если я правильно понял вопрос, то так

data = [‘postgres’, ‘почему’, ‘pg_dumpall’, ‘быстрый’, ‘pg_dump’]
z =[]
for i in data:
z.append (len(i))
print(z)

python, практика, подсчет букв.

задача в двух словах: «подсчитать количество символов в строке, вывести буковку с наибольшим упоминанием».

Пример: «Hello World!», вывод — «l».

def func(text): text = text.lower() a, b = max([(text.count(i), i) for i in set(text)]) return print(b) 

Платформа (checkio) ругается на тестах. Где я напортачил?

masterdilly
11.07.17 21:45:34 MSK

pawnhearts ★★★★★
( 11.07.17 21:46:31 MSK )

max возвращает одно значение (максимальное), а не пару

Psych218 ★★★★★
( 11.07.17 21:47:05 MSK )
x3al ★★★★★
( 11.07.17 21:47:20 MSK )
Ответ на: комментарий от Psych218 11.07.17 21:47:05 MSK

max возвращает одно значение (максимальное), а не пару

Но это работает

pawnhearts ★★★★★
( 11.07.17 21:49:15 MSK )
Последнее исправление: pawnhearts 11.07.17 21:51:16 MSK (всего исправлений: 1)

Ответ на: комментарий от pawnhearts 11.07.17 21:49:15 MSK

А, блин, точно. Я что-то протупил, что там пара.

Ну да, значит только return print()

Psych218 ★★★★★
( 11.07.17 21:57:36 MSK )
Ответ на: комментарий от x3al 11.07.17 21:47:20 MSK

Круть. Всё изменилось. А подскажите, как правильно выкусывать объекты из кортежа, отбросив ненужные переменные?

masterdilly
( 11.07.17 22:01:53 MSK ) автор топика
Ответ на: комментарий от Psych218 11.07.17 21:57:36 MSK

masterdilly
( 11.07.17 22:04:02 MSK ) автор топика
Ответ на: комментарий от masterdilly 11.07.17 22:04:02 MSK

Ты ж это написал, у тебя надо спросить. print выводит значение в stdout и возвращает None. Соответственно, твоя функция всегда возвращает None. Наверное ты хотел вернуть значение, букву, то есть:

return b

Или сначала вывести на экран, потом вернуть:

print(b) return b

Psych218 ★★★★★
( 11.07.17 22:17:55 MSK )
Ответ на: комментарий от masterdilly 11.07.17 22:01:53 MSK
x3al ★★★★★
( 11.07.17 22:18:13 MSK )
Ответ на: комментарий от pawnhearts 11.07.17 21:46:31 MSK

туплю, ткните, что в этом выражении не так? Как правильно передать символ?

masterdilly
( 11.07.17 22:19:35 MSK ) автор топика
Ответ на: комментарий от Psych218 11.07.17 22:17:55 MSK

Сейчас попробую. Да, выводит None. Прочел по print(). Спасибо.

masterdilly
( 11.07.17 22:23:10 MSK ) автор топика
Ответ на: комментарий от x3al 11.07.17 22:18:13 MSK

В python есть wildcard?

masterdilly
( 11.07.17 22:23:47 MSK ) автор топика
Ответ на: комментарий от masterdilly 11.07.17 22:19:35 MSK

Передать куда? Функция должна его возвращать, так ведь? Тогда правильно так:

return b

Ну и вызов твоей функции:

most_frequent_letter = func("Hello world!") print(most_frequent_letter) # Ну или там: print(func("Hello world!")) 

Кстати, у тебя в «задании» возможно ошибка, а возможно нет, если нет, то ошибка в коде. Ты говоришь «вывести буковку с наибольшим упоминанием», а у тебя выводится «символ с наибольшим упоминанием» (в более длинных строках это часто будет пробел, например). Что что-то не так (и нужны действительно именно буквы) на мысль наталкивает .lower().

P. S. Кстати, квадратные скобки не нужны. max и с генератором нормально работает, нет смысла делать именно список и выделять больше памяти. Ну и минус две скобки.

Psych218 ★★★★★
( 11.07.17 22:23:49 MSK )
Последнее исправление: Psych218 11.07.17 22:30:02 MSK (всего исправлений: 2)

Ответ на: комментарий от masterdilly 11.07.17 22:23:47 MSK

В питон3 есть такое.

 In [1]: x, *a = (1,2,3) In [2]: a Out[2]: [2, 3] In [3]: x Out[3]: 1 

pawnhearts ★★★★★
( 11.07.17 22:26:03 MSK )
Ответ на: комментарий от pawnhearts 11.07.17 22:26:03 MSK

Это уже знаю, но спасибо.

masterdilly
( 11.07.17 22:30:25 MSK ) автор топика
Ответ на: комментарий от masterdilly 11.07.17 22:30:25 MSK

А что ты имел ввиду тогда? _ это просто имя переменной(такое же как foo или x), которое обычно используют для переменной, которая тебе не нужна.

pawnhearts ★★★★★
( 11.07.17 22:31:50 MSK )
Ответ на: комментарий от Psych218 11.07.17 22:23:49 MSK

Кстати да, только буквы. Но это уже другая история.

masterdilly
( 11.07.17 22:46:37 MSK ) автор топика
Ответ на: комментарий от masterdilly 11.07.17 22:46:37 MSK

Кстати, если это не собственно задание, а реальная задача, то что функция должна делать, если две разных буквы встречаются одинакое количество раз? Сейчас по сути, возвращает любую из ни, можно сказать, случайную (какая раньше в переборе set’а окажется). Не уверен, что это желаемое поведение.

Psych218 ★★★★★
( 11.07.17 22:59:13 MSK )

Обычно подсчет чего-то и вывод top N делается так: https://en.wikipedia.org/wiki/Min-max_heap

xpahos ★★★★★
( 11.07.17 23:02:43 MSK )
Ответ на: комментарий от xpahos 11.07.17 23:02:43 MSK

MyTrooName ★★★★★
( 11.07.17 23:15:55 MSK )
Ответ на: комментарий от Psych218 11.07.17 22:59:13 MSK

import string def func(text): text = text.lower() return max(string.ascii_lowercase, key=text.count) 

По вопросу использования:

Как это используется: Для большинства задач по дешифрованию >необходимо знать частоту появления различных букв в подобном >тексте. Для примера, мы легко можем взломать одноалфавитный шифр >подстановки, если мы знаем вероятность появления букв. Это также >может быть полезной информацией для лингвистов.

P.S. Я просто прочел половину Лутца, надо практику. Кроме checkio.org пока и не нашел нормального.

masterdilly
( 11.07.17 23:22:57 MSK ) автор топика
Ответ на: комментарий от Psych218 11.07.17 22:59:13 MSK

Если в тексте две и больше буквы с одинаковой частотой, тогда >результатом будет буква, которая идет первой в алфавите.

masterdilly
( 11.07.17 23:24:16 MSK ) автор топика
Ответ на: комментарий от masterdilly 11.07.17 23:22:57 MSK

pawnhearts ★★★★★
( 11.07.17 23:25:34 MSK )
Ответ на: комментарий от pawnhearts 11.07.17 23:25:34 MSK

Спасибо. А там показывают решения других участников? Надо же набираться правильного? Я смотрел решения, например, на киберфоруме, так программа работает, но читать сам код неприятно. Написано без использования встроенных методов, полуСи.

masterdilly
( 11.07.17 23:29:50 MSK ) автор топика
Ответ на: комментарий от masterdilly 11.07.17 23:29:50 MSK

Незнаю, на hackerrank есть типа обсуждения задач.

Решения, которые тебе показывают не всегда самые лучшие. Часто всякие однострочники и хаки, но в реальной разработке такое писать не желательно.

pawnhearts ★★★★★
( 11.07.17 23:32:30 MSK )
Ответ на: комментарий от pawnhearts 11.07.17 23:32:30 MSK

Вот такое можно увидеть только благодаря возможности посмотреть решения (есть и рейтинг) других пользователей:

from string import ascii_lowercase as letters checkio = lambda text: max(letters, key=text.lower().count) 

masterdilly
( 12.07.17 00:29:09 MSK ) автор топика
Ответ на: комментарий от masterdilly 12.07.17 00:29:09 MSK

checkio = lambda text: max(letters, key=text.lower().count)

Так писать не рекомендуется. Это ничем не лучше, чем нормальное.

from string import ascii_lowercase def checkio(text): return max(ascii_lowercase, key=text.lower().count) 

А там чисто ухудшение читабельности ради ухудшения читабельности. Функции надо определять через def (на то оно и есть в языке, сразу видно, что функция, а не фигня какая-то), а не лямбды, лямбды для другого (как раз когда имя функции и не нужно). А зачем ascii_lowercase as letters — вообще не понятно, чисто чтобы лапши побольше, чтобы когда увидишь (в реальном проекте, не на две строки) это letters, искать, где же такое letters объявлено.

Чисто пример, как делать не надо. Хотя полагаю, юзер не специально, а наверное там количество строк просто считается — чем меньше, тем лучше. Иногда это, конечно, хорошее правило, но очень далеко не всегда, и не является целью. readability counts.

P. S. А ещё ascii_lowercase — это не все буквы. С кириллицей не будет работать.

Psych218 ★★★★★
( 12.07.17 00:44:04 MSK )
Последнее исправление: Psych218 12.07.17 00:45:04 MSK (всего исправлений: 1)

Ответ на: комментарий от Psych218 12.07.17 00:44:04 MSK

Задания то на английском. Главное — знания, опыт. А то, что нарутил лишнего, вместо «import ascii_lowercase», согласен на 200%.

masterdilly
( 12.07.17 00:56:06 MSK ) автор топика
Ответ на: комментарий от Psych218 12.07.17 00:44:04 MSK

Я бы и это на отдельной строчке написал, как в примере выше. Если бы там была подобная конструкция ещё длиннее и посреди неё выпало исключение, понятней в чем проблема.

Вообще мне вариант с collections.Counter нравится больше, он более понятный и подойдет для других подобных задач с минимальными изменениями. ИМХО.

pawnhearts ★★★★★
( 12.07.17 02:02:06 MSK )
Ответ на: комментарий от pawnhearts 12.07.17 02:02:06 MSK

Не, композиция — это нормально. Вот по поводу переименования и лямбды я согласен. А композиция, повторю, нормально.

Подсчет вхождений символа в строку Python

В этом посте мы обсудим, как подсчитывать количество вхождений символа в строку в Python.

1. Использование str.count() функция

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

if __name__ == ‘__main__’ :
s = «ABADACB»
n = s . count ( ‘A’ )
print ( n ) # 3

2. Использование collections.Counter class

Если вам нужно найти частоту нескольких символов, вызывая str.count() функция для каждого символа не рекомендуется. Вместо этого было бы лучше, если бы вы использовали collections.Counter Класс Pythonа. Он работает, сохраняя каждый символ в виде ключей словаря, а их количество — в виде значений словаря.

import collections
if __name__ == ‘__main__’ :
s = «ABADACB»
counter = collections . Counter ( s )
n = counter [ ‘A’ ]
print ( n ) # 3

The Counter class требует линейного времени для предварительной обработки строки и предлагает операции подсчета с постоянным временем. Однако он занимает некоторое место для хранения частоты каждого символа.

3. Использование словаря

В качестве альтернативы collections.Counter class, вы также можете создать простой словарь. Идея состоит в том, чтобы хранить каждый символ в виде ключей словаря, а их количество — в виде значений словаря.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *