Как выполнить проверку что переменная приняла значение str или int и выполнилась в цикле на python?

my_list1 = ["Vasya", 23, "China", 98, "Иван"]
a = len(my_list1)


def fun1():
    b = input("Выберите число из списка от 0 до {} или любые числа в этом диапазоне через пробел, "
              "либо введите число  больше чем {}:\n".format(a - 1, a - 1))
    if(type(b)==str):
        print("Вы ввели некорректное значение!")
        fun1()
    else:
        b = list(map(int, b.split()))
        for i in b:
            if i < a:
                print(my_list1[i])
            elif i >= a:
                print("Весь список: ", my_list1)


fun1()
while True:
    answer = str(input("Хотите повторить? (Да\Нет):\n"))
    if answer.lower() == "да":
        fun1()
    elif answer.lower() == "нет":
        exit()
    else:
        print("Некорректный ввод, повторите!")

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

Автор решения: REPAIR SERVICE

Это помогло, кому может пригодится.

if b.isalpha():
    print("Вы ввели некорректное значение!")
    fun1()
→ Ссылка
Автор решения: Ilya

Что-бы проверить является ли объект экземпляром указанного класса (в вашем случай: str или int) можно использовать функцию isinstance()

if isinstance(b, str):
    print("Вы ввели некорректное значение!")
    fun1()

Метод b.isalpha() проверяет состоит ли строка только только из символов. Например строка 'China1' - не пройдет проверку

→ Ссылка