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

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

25.04.2024, 21:33. Показов 3744. Ответов 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
 Аватар для Рыжий Лис
5972 / 3734 / 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
 Аватар для Рыжий Лис
5972 / 3734 / 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru