First of all, don’t use str
as a variable name, it will mask the built-in name.
As for counting characters in a string, just use the str.count()
method:
>>> s = "Green tree"
>>> s.count("e")
4
If you are just interested in understanding why your current code doesn’t work, you are printing 1
four times because you will find four occurrences of ‘e’, and when an occurrence is found you are printing len(scr)
which is always 1
.
Instead of printing len(scr)
in your if block, you should be incrementing a counter that keeps track of the total number of occurrences found, it looks like you set up a variable a
that you aren’t using, so the smallest change to your code to get it to work would be the following (however as noted above, str.count()
is a better approach):
str= "Green tree"
scr= "e"
cstr= len(str)
n=0
a=0
while n < cstr:
if str[n] == scr:
a+=1
n=n+1
print(a)
На чтение 3 мин Просмотров 6.6к. Опубликовано
В этой статье мы рассмотрим один из базовых навыков программирования на языке Python — подсчет количества символов в строке. Этот навык часто используется при работе с текстовыми данными, поэтому является необходимым для начинающих и опытных программистов.
Подсчёт символов в строке может быть полезным во многих случаях, например:
- Проверка ограничений на длину вводимого текста в веб-формах, где ограничено количество символов, которые можно ввести в определенное поле.
- Подсчет количества букв или цифр в тексте для анализа текстовых данных или статистики.
- Анализ и обработка текстовых файлов.
Содержание
- Основные способы подсчёта символов в строке
- Подсчёт символов в строке с помощью встроенной функции len()
- Ручной подсчет символов с помощью цикла
Основные способы подсчёта символов в строке
В Python существует несколько способов подсчета количества символов в строке. Один из самых простых и распространенных способов — использование функции len()
, которая возвращает количество символов в строке. Этот метод может использоваться для подсчета любых символов, включая буквы, цифры, знаки препинания и пробелы. Кроме того, для подсчета символов в строке, можно использовать циклы.
Подсчёт символов в строке с помощью встроенной функции len()
В Python есть встроенная функция len()
, которая позволяет узнать длину строки, т.е. количество символов в ней. Функция len()
принимает аргументом строку и возвращает целое число, равное количеству символов в этой строке. Для того чтобы использовать функцию len()
для подсчета символов в строке, необходимо передать в качестве аргумента эту строку. Например, если у вас есть переменная my_string
и вы хотите узнать, сколько символов содержится в этой строке, то вы можете вызвать функцию len(my_string)
, и она вернет число, равное количеству символов в my_string
.
Рассмотрим пример:
my_string = "Hello, World!"
length = len(my_string)
print("Длина строки: ", length)
В этом примере мы создали переменную my_string
, содержащую строку «Hello, World!», а затем использовали функцию len()
для подсчета количества символов в этой строке. Результат, возвращаемый функцией len()
, присваивается переменной length
. Наконец, мы выводим сообщение на экран, которое сообщает нам длину строки. В этом случае, результатом будет «Длина строки: 13», так как в строке «Hello, World!» содержится 13 символов.
Ручной подсчет символов с помощью цикла
Если вам нужно подсчитать количество символов в строке без использования встроенных функций, вы можете воспользоваться циклом. Для этого можно создать переменную, которая будет увеличиваться на единицу при каждой итерации цикла. Внутри цикла нужно пройтись по каждому символу строки и увеличивать значение переменной на единицу. В конце цикла значение переменной будет равно количеству символов в строке. Например, для строки «Hello, world!» можно использовать следующий код:
string = "Hello, world!"
count = 0
for char in string:
count += 1
print("Количество символов в строке:", count)
Этот код пройдется по каждому символу в строке «Hello, world!» и увеличит значение переменной count на единицу при каждой итерации цикла. После того, как цикл завершится, в переменной count будет храниться количество символов в строке.
( 2 оценки, среднее 3 из 5 )
Problem:
The count method only takes in one argument and you are trying to pass a whole list.
Solution:
Simply iterate over all the letters, then test if they are in the string before you print them and their amount.
import random
wordList = ["Tree", "Fish", "Monkey"]
wordChosen = random.choice(wordList)
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
for letter in letters:
if letter in wordChosen.lower():
amount = str(wordChosen.lower().count(letter))
print(letter + " : " + amount)
Result:
If the random word chosen is “Tree”:
e : 2
r : 1
t : 1
Conclusion:
Using collections is definitely a more effective method, but I believe the way I have shown above creates more of the output you were looking for.
0 / 0 / 0 Регистрация: 18.05.2021 Сообщений: 19 |
|
1 |
|
18.05.2021, 15:50. Показов 12624. Ответов 30
Есть слово, просто набор букв, например “иргуримгруимщгрум” Надо с использованием функции def посчитать количество букв в произвольном слове. Подскажите, кто знает?
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
18.05.2021, 15:50 |
30 |
Модератор 2868 / 1571 / 508 Регистрация: 21.02.2017 Сообщений: 4,198 Записей в блоге: 1 |
|
18.05.2021, 15:56 |
2 |
Ai-xander, что значит с использованием функции def?
0 |
Arsegg 3482 / 2089 / 560 Регистрация: 02.09.2015 Сообщений: 5,333 |
||||
18.05.2021, 16:01 |
3 |
|||
0 |
Am I evil? Yes, I am! 15975 / 8988 / 2601 Регистрация: 21.10.2017 Сообщений: 20,683 |
|
18.05.2021, 16:02 |
4 |
Arsegg, где def?
0 |
0 / 0 / 0 Регистрация: 18.05.2021 Сообщений: 19 |
|
18.05.2021, 16:03 [ТС] |
5 |
т.е. не просто через len, а задать функцию def
0 |
Dax Модератор 1353 / 650 / 207 Регистрация: 23.03.2014 Сообщений: 3,054 |
||||
18.05.2021, 16:04 |
6 |
|||
1 |
iSmokeJC Am I evil? Yes, I am! 15975 / 8988 / 2601 Регистрация: 21.10.2017 Сообщений: 20,683 |
||||
18.05.2021, 16:07 |
7 |
|||
Ai-xander, Добавлено через 1 минуту
3 |
Модератор 1353 / 650 / 207 Регистрация: 23.03.2014 Сообщений: 3,054 |
|
18.05.2021, 16:13 |
8 |
Не по теме: iSmokeJC, если честно, стремление к уникальности кода меня губит, len(mstr) продуктивней Добавлено через 3 минуты
0 |
0 / 0 / 0 Регистрация: 18.05.2021 Сообщений: 19 |
|
18.05.2021, 16:13 [ТС] |
9 |
спасибо, бро!
0 |
Fudthhh Модератор 2868 / 1571 / 508 Регистрация: 21.02.2017 Сообщений: 4,198 Записей в блоге: 1 |
||||
18.05.2021, 16:20 |
10 |
|||
0 |
Welemir1 |
18.05.2021, 16:23
|
Не по теме: вот те и раз!
0 |
0 / 0 / 0 Регистрация: 18.05.2021 Сообщений: 19 |
|
18.05.2021, 16:24 [ТС] |
12 |
я начинающий, пока что для меня это арабская вязь))) Спасибо!
0 |
Arsegg 3482 / 2089 / 560 Регистрация: 02.09.2015 Сообщений: 5,333 |
||||
18.05.2021, 16:49 |
13 |
|||
iSmokeJC, сколько букв в слове:
P. S. Форум сказал пока пробелам… Пусть
0 |
Am I evil? Yes, I am! 15975 / 8988 / 2601 Регистрация: 21.10.2017 Сообщений: 20,683 |
|
18.05.2021, 17:01 |
14 |
Arsegg,
Есть слово, просто набор букв
0 |
1509 / 479 / 56 Регистрация: 10.04.2009 Сообщений: 8,062 |
|
18.05.2021, 20:29 |
15 |
Через def посчитать буквы в слове ТС цель то у вас какая, это же как из гаубицы по муравьям стрелять
0 |
0 / 0 / 0 Регистрация: 18.05.2021 Сообщений: 19 |
|
18.05.2021, 20:57 [ТС] |
16 |
это я обучаюсь, домашка такая была. Основное сам делаю, но иногда на простых вещах зависаю… перегрев наверное)))
0 |
Hawaiian pilot 3 / 3 / 0 Регистрация: 18.05.2021 Сообщений: 93 |
||||
29.09.2021, 02:10 |
17 |
|||
вот и я зависла над той же задачей.
Но тоже ничего не считает((((
0 |
enx 1182 / 758 / 277 Регистрация: 05.09.2021 Сообщений: 1,772 |
||||||||
29.09.2021, 02:32 |
18 |
|||||||
Hawaiian pilot, не читал ветку, но так:
Добавлено через 14 минут
Добавлено через 1 минуту
0 |
Hawaiian pilot 3 / 3 / 0 Регистрация: 18.05.2021 Сообщений: 93 |
||||
29.09.2021, 02:46 |
19 |
|||
это новичкам не подходит))) реально марсианский
0 |
enx 1182 / 758 / 277 Регистрация: 05.09.2021 Сообщений: 1,772 |
||||
29.09.2021, 04:18 |
20 |
|||
Hawaiian pilot, да ладно вам, какая задача, такие решения…
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
29.09.2021, 04:18 |
Помогаю со студенческими работами здесь Написать алгоритм Маркова, который в алфавите {a,b,c} удаляет в слове предпоследнюю букву, если в слове есть буквы b Написать алгоритм Маркова, который в алфавите {a,b,c} удаляет в слове предпоследнюю букву, если в слове есть буквы b Строчные массивы: в слове наименьшей длины удалить все гласные буквы и подсчитать их количество в этом слове Выделить в слове Y те буквы, которые не используется в слове Z 8 лаба (тип данных строка)-выделяющую в слове Y те буквы,… Зачем нужно def main(), если есть def? Строки. В каждом четном по порядку слове удалить все нечетные буквы, а в каждом нечетном слове удалить все четные буквы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 20 |
считаем количество букв тремя способами с помощью функций sum, len и цикла for, результат: