Как найти количество чисел в строке питон

Ignoring anything else that may or may not be correct with your “revised code”, the issue causing the error currently quoted in your question is caused by calling the “count” function with an undefined variable because your didn’t quote the string.

  • count(thisisastring222) looks for a variable called thisisastring222 to pass to the function called count. For this to work you would have to have defined the variable earlier (e.g. with thisisastring222 = "AStringWith1NumberInIt.") then your function will do what you want with the contents of the value stored in the variable, not the name of the variable.
  • count("thisisastring222") hardcodes the string “thisisastring222” into the call, meaning that the count function will work with the exact string passed to it.

To fix your call to your function, just add quotes around asdfkasdflasdfl222 changing count(asdfkasdflasdfl222) to count("asdfkasdflasdfl222").

As far as the actual question “How to count digits, letters, spaces for a string in Python”, at a glance the rest of the “revised code” looks OK except that the return line is not returning the same variables you’ve used in the rest of the code.
To fix it without changing anything else in the code, change number and word to digit and letters, making return number,word,space,other into return digit,letters,space,other, or better yet return (digit, letters, space, other) to match current behavior while also using better coding style and being explicit as to what type of value is returned (in this case, a tuple).

For counting integers only, you can use a simple regular expression:

import re
s = '2019 was a great year for 10 fortunate people in ages 20 to 60.'
n = len(re.findall(r'd+', s))  # 4

Here 'd+' means “one or more decimal characters in a row”.

Note that re.findall produces a list of the results. If you only care about the number of elements (n), this is wasteful for input strings containing very many numbers. Instead, make use of an iterator approach, e.g.

import re
s = '2019 was a great year for 10 fortunate people in ages 20 to 60.'
n = sum(1 for _ in re.finditer(r'd+', s))  # 4

Incorporating floats

Let’s say that you allow floats like 1.2 and 3e-4 etc. as well. The corresponding regular expression is now much more complicated, and an easier solution would be to just loop over all “words” in the string and check if they can be interpreted as a number:

def is_number(num):
    try:
        float(num)
    except:
        return False
    return True

s = '2019 was a great year for 10 fortunate people in ages 20 to 60.'
n = sum(1 for num in s.split() if is_number(num))  # 4

На Python можно использовать функцию isdigit() из модуля string для проверки, является ли символ цифрой, и функцию sum() для подсчета количества цифр в строке.

Пример:

import string

def count_digits(s):

return sum(c.isdigit() for c in s)

s = ‘Hello, world! 123’

print(count_digits(s­)) # Output: 3

В этом примере функция count_digits() принимает строку s и возвращает количество цифр в этой строке.

Естественно, этот метод можно расширить или модифицировать в зависимости от ваших потребностей. Например, если вам нужно подсчитать количество конкретной цифры в строке, вы можете использовать метод count() строки.

s = ‘Hello, world! 123’

print(s.count(‘1’)) # Output: 1

Если вам нужно подсчитать количество цифр в нескольких строках, вы можете использовать цикл for и вызывать функцию count_digits() для каждой строки:

strings = [‘Hello, world!’, ‘abc123’, ‘123abc’]

for s in strings:

print(count_digits(s­))

Вывод:

3

3

3

Вы можете использовать эти методы или модифицировать их для решения своей задачи.

SkyFanGT

0 / 0 / 0

Регистрация: 21.11.2016

Сообщений: 20

1

Подсчитать количество чисел в тексте

18.12.2016, 14:01. Показов 48105. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

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

С клавиатуры вводиться строка текста, написать програму которая для этой строки:
а) заменяет все маленькие буквы, входящие в текст на соответствующие большие;
б) подсчитывает количество цифр в тексте;
в) удаляет последнее число из текста

Пол интернета перерыл, и книжки которые были по пайтону, не подсказали как решать.
Вся надежда на ваш опыт и знания.
Пожалуйста помогите, очень нужно!

П.С вот кусочек программы. Пункт А.

Python
1
2
3
4
5
6
a=input('Введите строку')
print(a)
b=a.split( )
n=len(b)
print('Форматированый текст',a.upper())
h=[]



0



Ennjin

103 / 81 / 54

Регистрация: 25.11.2016

Сообщений: 278

18.12.2016, 14:32

2

Цитата
Сообщение от SkyFanGT
Посмотреть сообщение

б) подсчитывает количество цифр в тексте;

Python
1
2
num = [int(i) for i in a if i.isdigit()]
print('Количество цифр в тексте:', len(num))



1



0 / 0 / 0

Регистрация: 21.11.2016

Сообщений: 20

18.12.2016, 14:46

 [ТС]

3

Спасибо)Интересная для меня функция) Всё работает.
Осталось только как-то удалить последнее число из текста…



0



Ennjin

103 / 81 / 54

Регистрация: 25.11.2016

Сообщений: 278

18.12.2016, 14:54

4

Python
1
2
3
4
5
6
new = a.split()
for i in new:
    if i.isdigit():
        new.remove(i[-1])
for i in new:
    print(i, end=' ')

Как то так.
Ну и целиком весь код

Python
1
2
3
4
5
6
7
8
9
10
11
a = input('Введите строку: ')
print(a)
print('Форматированый текст: ',a.upper())
num = [int(i) for i in a if i.isdigit()]
print('Количество цифр в тексте:', len(num))
new = a.split()
for i in new:
    if i.isdigit():
        new.remove(i[-1])
for i in new:
    print(i, end=' ')



1



0 / 0 / 0

Регистрация: 21.11.2016

Сообщений: 20

18.12.2016, 15:05

 [ТС]

5

У мене почему то удаляет не последнее число а все цифры(
В чём косяк?



0



Ennjin

103 / 81 / 54

Регистрация: 25.11.2016

Сообщений: 278

18.12.2016, 16:01

6

Цитата
Сообщение от SkyFanGT
Посмотреть сообщение

В чём косяк?

Во мне. потому что я поторопился и неправильно сделал.

Python
1
2
3
4
5
6
7
new = a.split()
out = []
for i in new:
    if i.isdigit():
        out.append(new[:-1])
for x in out[:][0]:
    print(x, end=' ')

Вот рабочий код, но это “говнокод”. Потому что я сам новичок и не знаю как сделать правильно.



1



Garry Galler

Эксперт Python

5407 / 3831 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

18.12.2016, 18:05

7

Если все объединить, то получим такой код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
line=list(input("Введите строку содержащую буквы и цифры:"))
cnt=0
for i,s in enumerate(line):
    if s.lower():
       line[i] = line[i].upper() # меняем регистр
    if s.isdigit():
        x = i  # здесь будет индекс последней цифры в строке
        cnt+=1 # считаем цифры
 
del line[x] # удаляем последнюю цифру из списка
print("Всего цифр:",cnt)
print("".join(line)) # соединяем список в строку

PS: Понятно, что регулярными выражениями будет, наверно, короче, но я так понимаю, что надо было обойтись обычными методами….



1



Semen-Semenich

4466 / 3146 / 1112

Регистрация: 21.03.2016

Сообщений: 7,833

18.12.2016, 19:53

8

Лучший ответ Сообщение было отмечено SkyFanGT как решение

Решение

Цитата
Сообщение от Garry Galler
Посмотреть сообщение

Если все объединить, то получим такой код

меня смущает эти два задания
б) подсчитывает количество цифр в тексте;
в) удаляет последнее число из текста
потому как если последние ЧИСЛО будет 253 то ваш код удалит последнюю цифру 3 но не число.
тут как то не понятно что посчитать а что удалить. если задания верны то увы ваш код не выполнит последнее условие

Добавлено через 7 минут
немного изменив получим требуемое

Python
1
2
3
4
5
6
7
8
9
10
11
12
line=input("Введите строку содержащую буквы и цифры:n").split()
cnt=0
for i,s in enumerate(line):
    if s.lower():
       line[i] = line[i].upper() # меняем регистр
    if s.isdigit():
        x = i  # здесь будет индекс последнего числа в строке
        cnt+= len(s) # считаем цифры
 
del line[x] # удаляем последнюю цифру из списка
print("Всего цифр:",cnt)
print(' '.join(line)) # соединяем список в строку

если конечно в строке текста числа и слова разделены пробелом



1



0 / 0 / 0

Регистрация: 21.11.2016

Сообщений: 20

19.12.2016, 02:04

 [ТС]

9

Спасибо, с индексом хорошо придумано) я бы не догадался. ОЧЕНЬ ВАМ БЛАГОДАРЕН!
и всем кто пытался или помог в решении, бобра всем и удачи.
Счастливых праздников!!



0



Как я могу посчитать количество чисел в строке

«2019 год был отличным годом для 10 счастливчиков в возрасте от 20 до 60 лет».

Результат должен быть 4 (2019, 10, 20, 60) Спасибо

4 ответа

Только для подсчета целых чисел вы можете использовать простое регулярное выражение:

Здесь ‘d+’ означает «один или несколько десятичных символов в строке».

Обратите внимание, что re.findall производит list результатов. Если вас интересует только количество элементов ( n ), это бесполезно для входных строк, содержащих очень много чисел. Вместо этого используйте итераторный подход, например,

Включение поплавков

Допустим, вы разрешаете float , например, 1.2 , 3e-4 и т. Д. Соответствующее регулярное выражение теперь намного сложнее, и более простым решением было бы просто перебрать все «слова» в строке и проверить, можно ли их интерпретировать как число:

Я бы разбил строку на токены, используя s.split(‘ ‘) , итерировал по каждому из них и использовал регулярное выражение типа d+ , чтобы проверить, что каждый символ является цифрой, и накапливать хорошие тестовые ответы в int.

re.findall — довольно простой способ разобраться с этим:

Это предполагает, что числа не являются числами с плавающей запятой или другими нецелыми числами.

Функция len() в Python, считает количество элементов.

Возвращает количество элементов в последовательности.

Синтаксис:
Параметры:
  • s — последовательность или коллекция.
Возвращаемое значение:
Описание:

Функция len() возвращает длину (количество элементов) в объекте.

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

Когда объект является строкой, функция len() возвращает количество символов в строке.

Пользовательские типы данных могут определять метод __len__() , значение из которого, будет возвращено при вызове функции len() .

Примеры подсчета количества элементов в последовательности.

Использование функции len() для подчеркивания строки:
Использование функции len() (как один из вариантов) в итерации по индексам последовательности:

По индексам последовательности, конечно удобнее итерироваться при помощи функции enumerate() .

Подсчет количества цифр в числе (длина числа)

Для того, чтобы посчитать количество цифр в числе необходимо сначала перевести число float или int в любую последовательность, например в строку, а затем к последовательности применить функцию len() , что бы получить количество элементов.

Для получения строкового представления объектов float и int , применим к ним функцию str.

Пример получения длины целого числа:

Так как вещественные числа в Python имеют запятую, то количество цифр в числе float будет на 1 меньше, а именно len(str(float)) — 1 .

Пример получения длины вещественного числа:

Чтобы получить количество уникальных цифр в числе, необходимо строковое представление числа преобразовать в множество set , т.к. множество представляет собой последовательность неповторяющихся элементов.

Lesson 1
Вход, печать и номера

1. Как читать и писать на Python

Каждая программа в конечном итоге является процессором данных, поэтому мы должны знать, как вводить и выводить в нее данные. Для вывода данных из любой программы Python существует функция print() . Чтобы использовать его, передайте список аргументов, которые вы хотите распечатать, в функцию print() . Давайте посмотрим пример. Нажмите «run», а затем «next», чтобы увидеть, как программа выполняется по строкам:

Чтобы вводить данные в программу, мы используем input() . Эта функция читает одну строку текста в виде строки.

Вот программа, которая читает имя пользователя и приветствует их:

2. Сумма чисел и строк

Попробуем написать программу, которая вводит два числа и печатает их сумму. Мы читаем два числа и сохраняем их в переменных a и b используя оператор присваивания = . В левой части оператора присваивания укажем имя переменной. Имя может быть строкой латинских символов ( AZ , az , 0-9 , _ ), но должно начинаться с буквы в диапазоне AZ или az . В правой части оператора присваивания мы помещаем любое выражение, которое может оценить Python. Имя начинает указывать на результат оценки. Прочтите этот пример, запустите его и посмотрите на вывод:

После запуска примера мы видим, что он печатает 57 . Как мы учили в школе, 5 + 7 дает 12 . Итак, программа неверна, и важно понять, почему. Дело в том, что в третьей строке s = a + b Python «суммировал» две строки, а не два числа. Сумма двух строк в Python работает следующим образом: они просто склеены один за другим. Его иногда называют «конкатенацией строк».

Вы видите в инспекторе переменных с правой стороны, что значения, связанные с переменными a и b , заключены в кавычки? Это означает, что в значениях есть строка, а не числа. Строки и числа представлены в Python по-разному.

Все значения в Python называются «объектами». Каждый объект имеет определенный тип. Число 2 соответствует объекту «номер 2» типа «int» (т. Е. Целочисленному числу). Строка ‘hello’ соответствует объекту «string» hello ” типа «str». Каждое число с плавающей запятой представляется как объект типа «float». Тип объекта указывает, какие операции могут быть применены к нему. Например, если две переменные “first” и “second” указывают на объекты типа int , Python может их размножать. Однако, если они указывают на объекты типа str , Python не может этого сделать:

Чтобы преобразовать строку цифр в целое число, мы можем использовать функцию int() . Например, int(’23’) дает объект int со значением 23 .

Учитывая вышеизложенную информацию, мы можем исправить неверный вывод и правильно вывести сумму двух чисел:

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