fbpx

Python почему невозможно ввести input в классе ???

340 просмотра
0
0 Комментариев

class MyClass(object):
    """docstring for MyClass"""
    def __init__(self, arg):
        super(MyClass, self).__init__()
        self.arg = arg
 
    def ipdate_val(self, x):
        self.val = x
 
    def recieve_val(self):
        while True:
            x = input('Введите количество клеток в квадрате ')
            if x == 'stop':
                break
            elif not x.isdigit():
                print ('вы ввели не число ' * 3 )
            else:
                num = int(x)
                if num < 40:
                    print ('слишком маленкое число')
                else:
                    summaMassiv1 = int(num) * int(num)
                    print ( summaMassiv1 )
                    print ( summaMassiv1 )
                    break # обрывает действие цикла True
 
obj = MyClass()
 
obj.recieve_val()
 
# печатаем объект
print (obj.val)


Добавить комментарий

1 Ответы

Python Опубликовано 25.06.2019
0

Ну, уже тут

obj = MyClass()

работать не будет, т.к.

def __init__(self, arg):

т.е. необходим как минимум один аргумент.
Далее, при вводе числа получаем ошибку, т.к. произойдет преобразование к int, у которого нет метода isdigit() — он строковый и нужно делать обратное преобразование (и отлавливать при этом исключение тоже не повредит)

а по поводу того, почему невозможно вывести: вы атрибут нигде не присваиваете, нет вызова self.ipdate_val(x)

на коленке вышло что-то такое:

def recieve_val(self):
        while True:
            x = input('Введите количество клеток в квадрате ')
            str_x = str(x)
            self.ipdate_val(x)
            if x == 'stop':
                break
            elif not str_x.isdigit():
                print ('вы ввели не число ' * 3 )
            else:
                num = int(x)
                if num < 40:
                    print ('слишком маленкое число')
                else:
                    summaMassiv1 = int(num) * int(num)
                    print ( summaMassiv1 )
                    print ( summaMassiv1 )
                    break # обрывает действие цикла True

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up