Проверка на низа с оператор if в Python

Искам да проверя дали входът е равен на низ или не. Но моят код не може да види оператор if. Мисля, че проблемът е в уравнението на оператора if:

    name = input("Name: ")
    if name != str:
        print("Please enter letter answer ...")
        name = str(input("Name: "))
    else:
        print(input(name))             

Предполагам, че не мога да напиша име != str. Но не знам как да проверя, че входът е равен на низ. ???


person Deniz Güvel    schedule 04.11.2020    source източник
comment
Вашият вход не може да бъде нищо друго освен низ.   -  person khelwood    schedule 04.11.2020
comment
Това отговаря ли на въпроса ви? Как да разберете дали обект на Python е низ?   -  person funie200    schedule 04.11.2020
comment
Добре дошли в Stackoverflow! Когато задавате въпроса си, опитайте се да форматирате кода си правилно, като използвате правилен отстъп, особено в Python, където отстъпите имат значение   -  person expressjs123    schedule 04.11.2020


Отговори (4)


Първо, не можете да проверите въведен низ срещу тип str. входовете винаги ще бъдат от тип str. Ако искате да проверите за низове като цяло, можете да използвате type(var) == str.

person expressjs123    schedule 04.11.2020

input винаги ще връща низ, така че не е нужно да проверявате дали е низ.

Освен това този ред: print(input(name)) пита за въвеждане отново, вероятно просто искате print(name)

Този код трябва да работи добре за това, което бихте искали:

name = input("Name: ")
print(name)

Ако искате името да не включва никакви цифри или интервали, така че да е само едно име, можете да опитате isalpha():

if name.isalpha():
    pass # Do your stuff with the name here
person funie200    schedule 04.11.2020

Бих препоръчал да използвате функцията isinstance(object, type), защото тя вече е булева функция, например: if isinstance(name,str):

можете също да използвате функцията type(), ако искате да използвате подход, подобен на този, който вече използвате. Функцията type() може да бъде полезна като цяло, например:

if type(name) != str:
   print("Error; name is ",type(name))
person Ponyboy    schedule 04.11.2020

В Python каквото и да въведете като вход, функцията input() го преобразува в низ. Ако въведете цяло число, тя все пак ще я преобразува в низ.

Използване на isaplha() като @funie200 каза:

while True:
    name = input("Name: ")

    if name.isalpha():
        print(name.title)
        break
    else:
        print("Please enter your name...")
person Community    schedule 04.11.2020