почему оператор str нельзя использовать в if ….else

#python

#python

Вопрос:

В программе мне нужно ввести целое число и строку. итак, я думаю str , можно ввести целое число и английский алфавит, но если я использую str и печатаю 1 , 2 он также отображает Unknown [{x}]!

 def main():
    x=str(input("This is input "))
    if x==1:  
        print("this x1") 
        
    elif x==2:
        print("this is x2")  

    else:
        print(f"Unknown [{x}]!n") #display user wrong input

main()
 

Комментарии:

1. Возможно, вы захотите использовать x == '1' . Обратите внимание на кавычки вокруг числа

2. Вашими собственными словами, когда вы пишете str(input("This is input ")) , что, по вашему мнению, делает str часть? По вашим собственным словам, что такое строка? По вашим собственным словам, вы ожидаете, что сможете сравнить строку с целым числом и они окажутся равными? Почему или почему нет?

3. x является строкой, поэтому x == 1 и x == 2 всегда будет False . Вероятно, вы хотите преобразовать x в int . Но если вы оставите его в виде строки, тогда вам следует сравнивать его со строками, а не с числами.

Ответ №1:

попробуйте это:

 def main():

   x = str(input("This is input "))
   if x== '1':  
       print("this x1") 
    
   elif x== '2':
       print("this is x2")  
    

   else:
       print("Unknown [{x}]!nn") #display user wrong input
       main()
main()
 

начиная с its, str должен иметь одинарные или двойные кавычки при сравнении.

Ответ №2:

Эти проверки if проверяют, является ли ввод x целым числом

 if x==1:  
    print("this x1") 
    
elif x==2:
    print("this is x2") 
 

Так что это всегда будет false, потому что, если вы введете 1 или 2, вы получите обратно:

  • Делает ‘1’ (ввод) == 1 (False строка, не равная Int)
  • Выполняет ли ‘2’ (ввод) == 2 (False ^ то же, что и выше)

Если у вас есть какие-либо сомнения с типами при тестировании, попробуйте распечатать тип при отладке 🙂

 print(type(x))
 

Поместите кавычки вокруг 1 и 2 в операторах if, и это должно работать для входов 1 и 2 🙂

     if x == '1':
    print("this x1")
    elif x == '2':
    print("this is x2")
 

Ответ №3:

В вашем коде есть некоторые ошибки, которые я написал все из них:

  1. Как вы хотите преобразовать input string , так что нет необходимости использовать str функцию, потому input что функция возвращает string значение по умолчанию. Вы можете проверить это с помощью print(type(x)) statement .
  2. 1 и 2 есть integer , нет string , поэтому else выполняется только часть. Вы должны изменить их на '1' and '2' .

Итак, ваш правильный код должен выглядеть следующим образом:

 def main():
    x=input("This is input ")
    if x == '1':  
        print("this x1") 
    elif x == '2':
        print("this is x2")  
    else:
        print(f"Unknown [{x}]!n") #display user wrong input
    main()


main()