0 / 0 / 0
Регистрация: 28.12.2021
Сообщений: 1

Подскажите пожалуйста, как оптимизировать код

28.12.2021, 04:11. Показов 5936. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я в данный момент учусь самостоятельно Python. Новичок. Поэтому и вопрос наверняка глупейший. Но в процессе обучения без этого никуда.
Встретилась такая задача: "Напишите программу, в которой пользователь вводит целое число, а программа определяет, сколько в этом числе цифр 0, 1, 2 и так далее, до 9."
Решение у меня получилось, все работает как надо, но мой код совсем мне не нравится. 9 раз повторяется один и тот же цикл! Подскажите как правильно оптимизировать его. Как обойти прерывание, чтобы повторно не запускать 9 раз один и тот же цикл?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
a = int(input('Введите целое число: '))
a = str(a)
start = -1
n = range(10)
count = 0
j = 0
 
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
 
while True:
    start = a.find(str(n[j]), start+1)
    if start == -1:
        break
    count += 1
print ('Количество', j, 'в числе:', count)
j += 1
count = 0
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.12.2021, 04:11
Ответы с готовыми решениями:

Пожалуйста, подскажите как написать код
Переберите числа до 100 (включительно). Выводите «бум» для каждого числа, которое делится на 2, «бам» — для тех, что делятся на 5 и «бабах»...

Подскажите , как оптимизировать код парсера
Что прочитать ,чтобы оптимизировать .... это) import requests from bs4 import BeautifulSoup def html(url): page =...

Строка: Если убрать запятые из кода в Names, код работает неправильно. Подскажите, пожалуйста, как исправить?
Куратор говорит убрать запятые из кода в Names, когда убираю получается не правильно, подскажите пожалуйста как исправить: ...

3
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
28.12.2021, 05:41
rodionkovalevsk, не переживай, все придет. Дам тебе пример арифметического решения.

Python
1
2
3
4
5
6
7
res = {}
num = abs(int(input('Введите любое целое число: ')))
while num:
    tmp = num % 10
    num = num // 10
    res[tmp] = res.get(tmp, 0) + 1
print('\n'.join(f'Количество цифр {i} = {res[i]}' for i in sorted(res)))

Bash
1
2
3
4
Введите любое целое число: -15151513
Количество цифр 1 = 4
Количество цифр 3 = 1
Количество цифр 5 = 3
Добавлено через 15 секунд
А ты задавай вопросы.
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
28.12.2021, 06:14
Python
1
2
3
4
5
6
7
8
9
10
while True:
    print()
    a = input('Введите целое число: ')
    if not a.isdigit():
        print('Это не число, повторите ввод.')
        continue
    for i in range(10):
        k = a.count( str(i) )
        if k:
            print( 'Цифр', i, 'в числе', k, 'шт.' )
1
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
28.12.2021, 09:39
Лучший ответ Сообщение было отмечено rodionkovalevsk как решение

Решение

Можно сделать через строки. Код короче.
Python
1
2
3
a = input("Введите число: ")
for i in range(10):
    print('Колличество', i, 'в числе =', a.count(str(i)))
П.С. Извините, не заметил, что такой вариант уже есть.
И на всякий случай: через числа код работает быстрее, чем со строками.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.12.2021, 09:39
Помогаю со студенческими работами здесь

Как можно оптимизировать код? Код считывает кол-во скобок
s = input() s = cheked = set() ans = 0 L = len(s) for l in range(L+1 if L % 2 else L, 1, -2): for i in range(L-l+1): ...

Как можно максимально оптимизировать данный код через логическое индексирование? Код полностью работает
header = data = , , , , , , , , , , , , ] import numpy as np def salary_info_purchased(data, gender=None, purchased=None): ...

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

Подскажите пожалуйста есть ли вариант оптимизировать этот код?
Вот задание: Определить какая цифра сколько раз встречается в массиве. Вот код: int digit0 = 0; int digit1 = 0; ...

Подскажите как оптимизировать код?
Не сильно разбираюсь в циклах,по этому вот такой аут вышел. ID_NomerPari идет от 1 до 7


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru