не могу разобраться с оператором 'or' в Python

Только начал с нуля изучать, заранее прошу прощения если вопрос тупой или неправильно написан. Не могу разобраться. Пытаюсь написать, чтобы строка спрашивала что ввести, когда человек вводит что-то, х принимает тип написанного(строка это или число). Но также хочу в elif перечислить типы, которые не подходят. Чтобы в итоге человек ввел только положительное число. Для этого еще нужен цикл, но и он не получается тоже. Долго уже пробую, так как знаний нет совсем, не получается и вопрос корректно в гугле задать не могу. Ответьте развернуто пожалуйста while True: x = input("Введите цифру")

if x.isdigit:
    print(int(x) / 100)
elif type(x) == float or (x < 0) or (x == 0):
    print('Введите положительное число')
else:
     print('Введите именно цифру')

Ошибка:

Traceback (most recent call last):
    File "C:/Users/Кирилл/PycharmProjects/pythonProject/test.py", line5,  in <module>             
         print(int(x) / 100)
ValueError: invalid literal for int() with base 10: 'ui'

Ответы (1 шт):

Автор решения: strawdog

Для начала продумайте алгоритм.

  1. Вам нужно создать цикл, который будет выполняться раз за разом до тех пор, пока пользователь не введет цифру. Легче всего этого добиться через бесконечный цикл while, который при удовлетворяющем нас вводе мы просто прервем через break
  2. Нужно каждый раз проверять, что введенное пользователем - цифра. лучше это делать через встроенный строковый метод isdigit.
  3. Если ввод нас устраивает, выполняем задуманное действие (делим на 100, например, предварительно переведя ввод пользователя в тип integer (потому что любой ввод - это строка) и прекращаем цикл через break.
  4. Если ввод не устраивает - выводим предупреждение и продолжаем цикл дальше.
while True:                    # создаём бесконечный цикл
    x = input("Введите цифру") # получаем ввод пользователя
    if x.isdigit():            # проверяем, является ли ввод цифрой
        print(int(x)/100)      # выводим на печать, выполнив деление
        break                  # прерываем бесконечный цикл
    else:                      # если ввод - не цифра, то выводим
        print("Нужно ввести цифру!")  # ругательство

UPDATE

Пример использования or. Здесь проверка ввода производится наоборот - если ввод пользователя не является цифрой (not isdigit), или (or) эта цифра равна 0, то ругаемся и повторяем цикл. В противном случае, делим полученную цифру на 100:

while True:
    x = input("Введите цифру")
    if not x.isdigit() or int(x)==0:
        print("Нужно ввести цифру!")
    else:
        print(int(x)/100)
        break
→ Ссылка