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

Способ 1.

str(4**255 + 2**255 - 255).count('1')

Приводим к строке, вызываем строковый метод подсчета символа.

Способ 2.

sum(1 for elem in bin(4**255+ 2**255 - 255)) if elem == '1')

Считаем количество единиц, так как функция bin переводит к строковому типу вида ‘0bxxx’, где xxx – цифры числа в двоичном представлении.

Способ 3.

Также существует несложный алгоритм.

4^255 = 2^(255 * 2) степень двойки, будет обозначать единица в двоичном представлении данной суммы.

2^255 — аналогично.

С вычитанием интереснее, можно проследить следующую закономерность:

2^n - 2^m — будет содержать n - m единиц (проверьте это и докажите самостоятельно).

Отсюда сделаем следующий финт: -255 = -256 + 1 = -2^8 + 2^0

В итоге наше выражение: 2^(255 * 2) + 2^255 - 2^8 + 1 будет иметь 1 + (255 - 8) + 1 единицу, так как 2^255 - 2^8 четное число и значит нулевой бит у него будет нулевой и прибавление единицы добавит только единицу.

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).

Mike Florez



Ученик

(71),
на голосовании



1 год назад

Дана строка, состоящая из групп нулей и единиц. Посчитать количество нулей и единиц.
Помогите пожалуйста.

Голосование за лучший ответ

port port

Искусственный Интеллект

(181477)


1 год назад

s=’1111000011′
print(s.count(‘0’))
print(s.count(‘1’))

или

for i in [‘0′,’1’]: print(s.count(i))

Или тебе нужно подсчитать ГРУППЫ?

Mike FlorezУченик (71)

1 год назад

Спасибо очень помогли)

Похожие вопросы

Уведомления

  • Начало
  • » Центр помощи
  • » Подсчитать количество нулей и единиц

#1 Июнь 6, 2017 14:11:11

Подсчитать количество нулей и единиц

Привет) Я начал изучать Python недавно, поэтому мне нужна помощь.
мой код:

 from random import randint as r
 while 1:
    x = int(input('nкол-во: '))
    for i in range(x):
       print(r(0,1),end='')

Как посчитать количество нулей і единиц в строке, что выведется?
Чтобы конечный результат был такой:
Нулей: x
Единиц: y

Офлайн

  • Пожаловаться

#2 Июнь 6, 2017 14:40:03

Подсчитать количество нулей и единиц

Sergava
Как посчитать количество нулей і единиц в строке,

Покажите в вашем коде хоть одну строку

Офлайн

  • Пожаловаться

#3 Июнь 6, 2017 14:49:45

Подсчитать количество нулей и единиц

FishHook
Например я введу 10 в input, тогда вывод будет например 0101110110.
Как посчитать количество 0 и 1?

Офлайн

  • Пожаловаться

#4 Июнь 6, 2017 15:12:51

Подсчитать количество нулей и единиц

 >>> "10101010001".count("1")
5
>>> "10101010001".count("0")
6

С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

  • Пожаловаться

#5 Июнь 6, 2017 15:44:35

Подсчитать количество нулей и единиц

Rodegast
я ж не буду вручную копировать цыфры. хотелось бы чтоб автоматически после вывода результата считало

Офлайн

  • Пожаловаться

#6 Июнь 7, 2017 01:41:00

Подсчитать количество нулей и единиц

  
>>> from random import randint as r
>>> 
>>> while 1:
...     s = input('nкол-во: ')
...     if not s:
...         break
...     x = int(s)
...     lst = [r(0, 1) for i in range(x)]
...     nzeros = lst.count(0)
...     nones = lst.count(1)
...     print('Список:', lst)
...     print('Нулей:', nzeros)
...     print('Единиц:', nones)
... 
 
кол-во: 10
Список: [1, 1, 0, 1, 1, 0, 1, 1, 0, 0]
Нулей: 4
Единиц: 6
 
кол-во: 
>>>

Отредактировано py.user.next (Июнь 7, 2017 01:41:07)

Офлайн

  • Пожаловаться

#7 Июнь 7, 2017 22:24:18

Подсчитать количество нулей и единиц

py.user.next
Таким способом я делал, даже вышло.
Вот только списком выводить мне не вариант.
Я пробовал сделать другим способом, но чёт не выходит.
Если создать переменные zero = 0, one = 0, при каждом выводе рандомного числа,если это 0, то к zero +1, если это 1, то к one +1 добавлять и в конце вывести результат, должно получится.
Помогите исправить мой код:

 import random
x = random.randint(0, 1)
zero = 0
one = 0
while 1:
    vvod = input('кол-во: ')
    for i in range(int(vvod)):
        if x == 0:
            nul = nul + 1
        elif x == 1:
            one = one + 1
        print(x)
    print('нулей: ', zero)
    print('единиц: ', one)

Офлайн

  • Пожаловаться

#8 Июнь 7, 2017 23:06:02

Подсчитать количество нулей и единиц

проблема в том, что в цикле используется значение x одно и то же. Его нужно менять при каждом вызове итерации

 import random
nul = 0
one = 0
while 1:
    vvod = input('кол-во: ')
    for i in range(int(vvod)):
        x = random.randint(0, 1)
        if x == 0:
            nul = nul + 1
        elif x == 1:
            one = one + 1
        print(x)
    print('нулей: ', nul)
    print('единиц: ', one)

Офлайн

  • Пожаловаться

#9 Июнь 7, 2017 23:35:56

Подсчитать количество нулей и единиц

Romissevd
проблема в том, что в цикле используется значение x одно и то же. Его нужно менять при каждом вызове итерации

теперь понял
спасибо большое!

Офлайн

  • Пожаловаться

  • Начало
  • » Центр помощи
  • » Подсчитать количество нулей и единиц

На 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

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

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