Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 05.02.2021
Сообщений: 162

Проверка числа на натуральность

25.04.2024, 21:33. Показов 4604. Ответов 7

Студворк — интернет-сервис помощи студентам
Доброго времени суток
Раньше для проверки корректности ввода писал так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while True:                                      #  Цикл служит для защиты от ввода нецифровых символов
    numbers = input("Введите число: ")           #  Ввод-приглашение пользователю
    try:                                         #  
        numbers = int(numbers)                   #  Конвертируем строку в число
        while numbers <= 0:                      #  Цикл служит для защиты от ввода отрицательного числа
            print("Ошибка: введено ненатуральное число")
            break                                # Выход из цикла
        else:
 
            #  ОСНОВНОЙ КОД
            array = []                           #  Объявляем список
            for i in range(numbers + 1):         #  Формируем а затем проходим по последовательности чисел от 0 до n (number)
                 if 2**i <= numbers:             #  Если выполняется условие принадлежности числа 2**i указанному диапазону,
                      array.append(2**i)         #  добавляем в список
            print(array)                         #  Вывод списка
            break                                #  Выход из цикла
 
    except ValueError:  # перехватываем ошибку-исключение
        print("Ошибка: Совершен некорректный ввод данных")

Попалась такая задачка:
Python
1
2
3
4
5
6
7
8
9
10
11
count = int(input('Введите количество чисел: '))                               #  Определяем количество чисел списка
number = [ int(input(f'Введите {i + 1}-е число: ')) for i in range(count) ]    #  Ввод чисел и формирование списка
count_temp = 0                                                                 #  Временная переменная для подсчета количества простых чисел
for i in number:                                                               #  Проходимся циклом по списку, получаем числа по порядку формирования списка
    temp = 0                                                                   #  Временная переменная для подсчета кол-ва делителей чисел
    for j in range(1, i + 1):                                                  #  Проходим циклом по каждому числу в списке для нахождения делителей числа
        if i % j == 0:                                                         #  Если делители без остатка найдены
            temp += 1                                                          #  Считаем их количество
    if temp == 2:                                                              #  Если количество делителей равно 2, то число простое
        count_temp += 1                                                        #  Считаем количество простых чисел
    print(count == count_temp)                                                 #  Если кол-во чисел и кол-во простых чисел совпадает, то все числа простые
Вопрос как проверить все числа не дублируя при этом While
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.04.2024, 21:33
Ответы с готовыми решениями:

Нужно взять число с клавиатуры и проверить его на целочисленность и натуральность
Нужно взять число с клавиатуры и проверить его на целочисленность,если оно целое и натрулаьное вывести good ,если нет то вывести ошибка и...

Проверка дробности числа без учёта отрицательности числа
Может можно проще, но не знаю пока как. Если знаете скажите как. Не знаю как исправить: при вводе отрицательного целого выводит его, что...

Возведение числа в степень и проверка числа на четность
Добрый вечер что то вообще не понял эту тему помогите пожалуйста С помощью директивы #define написать следующие макросы: a) возведение...

7
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.04.2024, 07:55
Лучший ответ Сообщение было отмечено solvo23 как решение

Решение

Цитата Сообщение от solvo23 Посмотреть сообщение
не дублируя при этом While
Зачем тут вообще while ?
if не проходили что ли?
Цитата Сообщение от solvo23 Посмотреть сообщение
Вопрос как проверить все числа
Создать функцию для получения требуемого числа.

Добавлено через 2 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
def getPositiveInt(msg: str) -> int:
    while True:
        try:
            z = int(input(msg))
            if z <= 0:
                raise ValueError
            return z
        except ValueError:
            print("Invalid input, try again")
 
 
v = getPositiveInt('Введите натуральное число: ')
2
2 / 2 / 0
Регистрация: 05.02.2021
Сообщений: 162
26.04.2024, 10:20  [ТС]
(msg: str) -> int:
Вот это точно не проходили

Цикл здесь добиться от пользователя ввода корректного значения
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.04.2024, 10:59
Цитата Сообщение от solvo23 Посмотреть сообщение
Вот это точно не проходили
Не проходили - не используй
Python
1
def getPositiveInt(msg):
2
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
26.04.2024, 16:47
Лучший ответ Сообщение было отмечено solvo23 как решение

Решение

Цитата Сообщение от solvo23 Посмотреть сообщение
Вот это точно не проходили
Если функции не проходили, то никак. Только дублируя код.

Добавлено через 2 минуты
Вот то же самое без увеличения уровня вложенности:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while True:                                      #  Цикл служит для защиты от ввода нецифровых символов
    numbers = input("Введите число: ")           #  Ввод-приглашение пользователю
    try:                                         #  
        numbers = int(numbers)                   #  Конвертируем строку в число
    except ValueError:                           # перехватываем ошибку-исключение
        print("Ошибка: Совершен некорректный ввод данных")
        continue
    if numbers <= 0:
        print("Ошибка: введено ненатуральное число")
        continue
    break                                        # Выход из цикла
 
# здесь уже существует переменная numbers
 
#  ОСНОВНОЙ КОД
array = []                           #  Объявляем список
for i in range(numbers + 1):         #  Формируем а затем проходим по последовательности чисел от 0 до n (number)
    if 2**i <= numbers:             #  Если выполняется условие принадлежности числа 2**i указанному диапазону,
        array.append(2**i)         #  добавляем в список
print(array)                         #  Вывод списка
Добавлено через 3 минуты
Как-то так без функций:
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
# count = int(input('Введите количество чисел: '))
while True:                                      #  Цикл служит для защиты от ввода нецифровых символов
    try: 
        count = int(input('Введите количество чисел: '))
    except ValueError:                           # перехватываем ошибку-исключение
        print("Ошибка: Совершен некорректный ввод данных")
        continue
    if count <= 0:
        print("Ошибка: введено ненатуральное число")
        continue
    break                                        # Выход из цикла
 
# number = [ int(input(f'Введите {i + 1}-е число: ')) for i in range(count) ]
number = []
for i in range(count):
    while True:
        try:
            i = int(input(f'Введите {i + 1}-е число: '))
        except ValueError:
            print("Ошибка: Совершен некорректный ввод данных")
            continue
        break
    number.append(i)
 
count_temp = 0                                                                 #  Временная переменная для подсчета количества простых чисел
for i in number:                                                               #  Проходимся циклом по списку, получаем числа по порядку формирования списка
    temp = 0                                                                   #  Временная переменная для подсчета кол-ва делителей чисел
    for j in range(1, i + 1):                                                  #  Проходим циклом по каждому числу в списке для нахождения делителей числа
        if i % j == 0:                                                         #  Если делители без остатка найдены
            temp += 1                                                          #  Считаем их количество
    if temp == 2:                                                              #  Если количество делителей равно 2, то число простое
        count_temp += 1                                                        #  Считаем количество простых чисел
    print(count == count_temp)                                                 #  Если кол-во чисел и кол-во простых чисел совпадает, то все числа простые
1
2 / 2 / 0
Регистрация: 05.02.2021
Сообщений: 162
26.04.2024, 21:02  [ТС]
Сами функции проходили простейшие
Я не понял именно этот кусочек
msg: str) -> int:
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
27.04.2024, 14:04
Лучший ответ Сообщение было отмечено solvo23 как решение

Решение

Это аннотации, можно без них.

Добавлено через 4 минуты
С функциями можно переиспользовать код, так что упрощается:
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
def int_input(prompt):
    """
    :type prompt: str
    :rtype: int
    """
    while True:  # Цикл служит для защиты от ввода нецифровых символов
        try:
            value = int(input(prompt))
        except ValueError:  # перехватываем ошибку-исключение
            print("Ошибка: Совершен некорректный ввод данных")
            continue
        if value <= 0:
            print("Ошибка: введено ненатуральное число")
            continue
        return value
 
 
count = int_input('Введите количество чисел: ')
number = [int_input(f'Введите {i + 1}-е число: ') for i in range(count)]
 
count_temp = 0                                                                 #  Временная переменная для подсчета количества простых чисел
for i in number:                                                               #  Проходимся циклом по списку, получаем числа по порядку формирования списка
    temp = 0                                                                   #  Временная переменная для подсчета кол-ва делителей чисел
    for j in range(1, i + 1):                                                  #  Проходим циклом по каждому числу в списке для нахождения делителей числа
        if i % j == 0:                                                         #  Если делители без остатка найдены
            temp += 1                                                          #  Считаем их количество
    if temp == 2:                                                              #  Если количество делителей равно 2, то число простое
        count_temp += 1                                                        #  Считаем количество простых чисел
    print(count == count_temp)                                                 #  Если кол-во чисел и кол-во простых чисел совпадает, то все числа простые
1
2 / 2 / 0
Регистрация: 05.02.2021
Сообщений: 162
27.04.2024, 17:27  [ТС]
Python
1
2
count = int_input('Введите количество чисел: ')
number = [int_input(f'Введите {i + 1}-е число: ') for i in range(count)]
Вот эти две строки и не знал как написать, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.04.2024, 17:27
Помогаю со студенческими работами здесь

Код некорректно работает, задание такое - сумма первой и последней цифры заданного числа, нужна проверка на ввод числа
#include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; int main() { int x, n = 0; int sum = 0; int bruh, flag =...

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

Проверка числа
Здравствуйте Прошу помочь мне Не совсем понял как это сделать и есть ли встроенная функция типа isNan Проблема состоит в следующем: у...

Проверка числа
Дано число. Требуется определить, корректно ли оно. Число может быть записано в 2-ух формах: - обычной - экспоненциальной ...

Проверка числа
Здравствуйте, Прошу помочь написать скрипт, который будет проверять введенное число пользователем (например число - 5) с рандомными...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru