2017-01-08 2 views
-2

У меня есть этот скрипт:Включая raw_input в классе

class usr: 
    def __init__(self, inp): 
    self.inp = inp 
    if inp == "abc": 
     print 0 
     exit() 


user_input = usr(raw_input()) 
if user_input == "123": 
    print("1") 
else: 
    print("No") 

Но, даже если я типа «123», выход «Нет». В нормальных условиях я бы поставил оператор «abc» в if, но мне нужно проверить ввод нескольких команд, поэтому я решил, что класс был лучшим выбором.

+0

Это совсем не ясно, каков ваш вопрос. Учитывая, что вы не реализуете 'usr .__ eq__', как вы можете разумно оценивать' user_input == '123''? Какой результат вы ожидаете от этого? И почему вы используете классы старого стиля (т. Е. Не наследуете от 'object', несмотря на то, что вы помечаете свой вопрос [tag: python-2.7])? – jonrsharpe

+0

У меня нет объектов для наследования, я полагаю –

+0

Нет, я имею в виду буквально из 'object'. Чтение, например. http://stackoverflow.com/q/54867/3001761 – jonrsharpe

ответ

0

Если данные не совпадают, как вы думаете, это первый инструмент в вашем наборе инструментов - это заявление печати. Просто добавьте print user_input, и вы найдете его экземпляр класса usr, а не пользовательский ввод. Вы сохранили это в переменной экземпляра, которая называется inp. В стороне, в pythnon 2, вы должны наследовать от object, чтобы получить класс нового стиля. Вам не нужно делать это в Python 3.

class usr(object): 
    def __init__(self, inp): 
    self.inp = inp 
    if inp == "abc": 
     print 0 
     exit() 

user_input = usr(raw_input()) 
if user_input.inp == "123": 
    print("1") 
else: 
    print("No") 

Если все, что вам нужно сделать, это проверить вход и не хранить его, функция является лучшим вариантом. Он может просто вернуть проверенную строку. Он также может использовать другие данные. В этом примере я также разбиваю пробелы спереди и сзади, поэтому игнорируются незначительные ошибки ввода.

def usr(inp): 
    inp = inp.strip() 
    if inp == "abc": 
     print 0 
     exit() 
    return inp 

user_input = usr(raw_input()) 
if user_input == "123": 
    print("1") 
else: 
    print("No") 
Смежные вопросы