Python

Подскажите по циклю While в Python

Что-то не могу сообразить по циклу.
Пользователь должен вводит число целочисленное, а если вводит с плавающей точкой или текст, то должно выходит сообщение: Введите верное значение.
И пока не введёт целочисленное, цикл будет работать

В голове картина такая: Пока х не равно целочисленное или равно float или равно str повторять ниже приведённые инструкции, но крч у меня бесконечно цикл повторяется и всё.

Написал вот так:
 x = input('Введите число: ') 
while x != int() or x == float() or x == str():
print('Введите верное значение')
x = input(input('Введите число: '))
print(x)
Пробовал вот так:

 while True: 
x = input('Введите число: ')
if x != int() or x == float() or x != str():
print('Введите верное значение')
break
print(x)
А вот так цикл тоже бесконечный:
 while True: 
x = input('Введите число: ')
if x != int() or x == float() or x != str():
print('Введите верное значение')
else:
print(x)
break
Подскажите что не так и как лучше
Ваш код не работает, потому что функция input() всегда возвращает строку, а не число. Чтобы проверить, является ли введенное пользователем значение целым числом, вы можете использовать метод isdigit() у строки. Вот пример кода, который реализует желаемое поведение:

while True:
x = input('Введите число: ')
if x.isdigit():
x = int(x)
break
else:
print('Введите верное значение')

print(x)
В этом коде цикл while будет повторяться до тех пор, пока пользователь не введет корректное значение. Если введенное значение является целым числом (то есть состоит только из цифр), то оно преобразуется в целое число с помощью функции int() и цикл завершается. В противном случае выводится сообщение об ошибке и цикл продолжается.

Получено сообщение.
AL
Aleksey Lobanov
496
Лучший ответ
Проблема в условии цикла. Вы проверяете, равно ли введенное значение x типу данных int, float или str, но такой способ проверки неверен. Вместо этого, вы можете попытаться преобразовать введенное значение в целое число с помощью функции int(), и если это не удалось, то выдать сообщение об ошибке и повторить цикл.

Вот как может выглядеть исправленный код:

python
Copy code
while True:
x = input('Введите число: ')
try:
x_int = int(x)
break
except ValueError:
print('Введите верное значение')

print(x_int)
Здесь мы используем блок try-except для попытки преобразовать введенное значение в целое число. Если это не удалось (была вызвана ошибка ValueError), мы выводим сообщение об ошибке и повторяем цикл. Если преобразование было успешным, мы выходим из цикла и используем переменную x_int (которая содержит целое число) дальше в коде.